我在使用 Java Swing 文本输入时遇到问题。我在类 A
中有一个方法 inputData()
,当我调用它时,该方法应该等待用户在类 中填写 TextField
并按 ENTER。最后,input
>BinputData()
方法应该包含用户编写的文本。我该如何解决?
class A {
B b = new B();
public A() {
inputData();
}
public char[] inputData() {
// there I would like to get text
// from TextField from class B
}
}
//-------------------------------
class B extends JFrame{
private JTexField input;
public B() {
}
private void inputKeyPressed(KeyEvent e) {
if (e.getKeyCode() == 10) { // pressed ENTER
input.getText()
input.setText(null);
}
}
}
最佳答案
您实际上可能不需要 JTextField。听起来您正在等待用户的一行输入,这实际上应该是一个 JOptionPane。此处描述了如何执行此操作:
http://download.oracle.com/javase/tutorial/uiswing/components/dialog.html#input
基本上,JOptionPane.showInputDialog() 会导致弹出一个窗口,其中包含一个文本字段和确定/取消按钮,如果您按回车键,它将接受您的输入。这消除了对另一个类的需要。
您将它放在您的 inputData() 方法中:
inputData()
{
String input = JOptionPane.showInputDialog(...);
//input is whatever the user inputted
}
如果这不是您要查找的内容并且您想要一个保持打开的文本字段,那么您真正想要的可能是 JTextField 旁边的“提交”按钮,它允许用户决定何时提交文本。在这种情况下,您可以:
class B extends JFrame
{
private A myA;
private JTextField input;
private JButton submitButton;
public B()
{
submitButton.addActionListener(new SubmitListener());
}
private class SubmitListener
{
//this method is called every time the submitButton is clicked
public void actionPerformed(ActionEvent ae)
{
myA.sendInput(inputField.getText());
//A will need a method sendInput(String)
}
}
}
关于java - 从其他类访问 Java Swing TextField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5285364/