В моем приложении Swing я использую компонент JTextField
для получения значений текста Farsi.
Я хочу установить языковой стандарт для этого компонента, используя следующий код:
txt_fname.getInputContext().selectInputMethod(new Locale("fa", "IR"));
Но txt_fname.getInputContext()
возвращает значение null
а код txt_fname.getInputContext()
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 . . .