访问 JTextField 文本

Accessing JTextField Text

我有一个简单的程序,我正在尝试从文本字段访问数据,但我总是得到 null 或空字段。

举个例子。

public class income {   
JButton save = new JButton("save");

  public JTextField setIncomeValue() {
  ..
  ..
    JTextField incomeValue = new JTextField(10);
    return incomeValue;
  }

  public void launch_Ui{
   frame.add(setIncomeValue());
   frame.add(save);
   save.addactionlistener(new saveListener());
  }
}

class saveListener  implements ActionListener{
    @Override
    public void actionPerformed(ActionEvent e) {
        String test = new income().setIncomeValue().getText();
        System.out.println("savings...  " + test + " value ?");
    }

}

有人有任何想法或以前偶然发现过这个挑战吗?

每次调用 setIncomeValue() 时都会创建一个新对象,因此每次都会得到 null

在您的 JButton save 旁边添加一个 JTextField 成员,并保留对第一个 setIncomeValue():

的引用
JButton save = ...;
JTextField income = setIncomeValue(); // Created once
...

class SaveListener implements ActionListener{
    @Override
    public void actionPerformed(ActionEvent e) {
        String test = income.getText();
        ...
    }
}

这会起作用,因为 SaveListener 是 class Income 的内部 class(请对 class 名称使用大写),因此可以访问致其母亲 class' 成员。

更新

仔细查看我的逻辑后,我终于想出了一个解决方案。
我所做的是在我的 savelistener 中创建一个范围。

class saveListener implements ActionListener{

JTextField incomeData;

public saveListener(JTextField incomeData) {
    this.incomeData = incomeData;
 }

 @Override
 public void actionPerformed(ActionEvent e) {
 String test = incomeData.getText();
    System.out.println("Input data " + test);
  }
}

希望对有需要的人有所帮助:)