JTextField.getInputContext()返回null值

时间:2014-05-28 09:17:27

标签: java swing nullpointerexception jtextfield

在我的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"));        
}

1 个答案:

答案 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 . . .