我一直在使用功能getText()来读取MyJTextField中的用户输入,直到我注意到禁用JTextField看起来不可行。
JTextField jtx = new JTextField();
jtx.setText("TEST");
jtx.setEnabled(false);
String str = jtx.getText();
System.out.println(str);
这不会返回任何信息,我开始认为这是由于禁用的JTextField。有没有一种方法可以从禁用的JTextField中获取文本,还是应该:
jtx.setEditable(false);
我不想这样做。我希望禁用该字段。
最佳答案
下面的代码按预期工作(打印TEST是启用还是禁用了文本字段)-您是否在EDT中运行代码?
public static void main(String[] args) throws InterruptedException {
Runnable r = new Runnable() {
@Override
public void run() {
JTextField jtx = new JTextField();
jtx.setText("TEST");
System.out.println("Before: " + jtx.getText());
jtx.setEnabled(false);
System.out.println("After: " + jtx.getText());
}
};
SwingUtilities.invokeLater(r);
}