在我的Swing应用程序中,我使用JTextField
组件获取波斯语文本值。
我想使用以下代码为此组件设置语言环境:
txt_fname.getInputContext().selectInputMethod(new Locale("fa", "IR"));
但是
txt_fname.getInputContext()
返回null
并且代码抛出NullPointerException
。我怎么解决这个问题?
已编辑
该代码在InternalJFrame构造函数中调用:
public DriversList() {
initComponents();
txt_fname.getInputContext().selectInputMethod(new Locale("fa", "IR"));
}
最佳答案
此MCVE建议您未显示的代码正在尝试在首次显示文本字段之前获取输入上下文。
码
import java.awt.*;
import javax.swing.*;
class InputContextTest {
public static void main(String[] args) {
Runnable r = new Runnable() {
@Override
public void run() {
JTextField tf = new JTextField(10);
System.out.println(tf.getInputContext());
JOptionPane.showMessageDialog(null, tf);
System.out.println(tf.getInputContext());
}
};
// Swing GUIs should be created and updated on the EDT
// http://docs.oracle.com/javase/tutorial/uiswing/concurrency
SwingUtilities.invokeLater(r);
}
}
输出量
null
sun.awt.im.InputMethodContext@1fa5e5e
Press any key to continue . . .