在我的Swing应用程序中,我使用JTextField
组件来获取Farsi文本值。
我想使用以下代码为此组件设置区域设置:
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"));
}
答案 0 :(得分:3)
此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 . . .