访问JTextField文本

时间:2019-05-29 09:12:55

标签: java swing jtextfield

我有一个简单的程序,我试图从文本字段访问数据,但是我总是得到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 ?");
    }

}

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

2 个答案:

答案 0 :(得分:1)

更新

仔细研究了逻辑之后,我终于找到了解决方案。
我所做的就是在我的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);
  }
}

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

答案 1 :(得分:0)

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

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

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

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

之所以可行,是因为SaveListener是类Income的内部类(请使用大写字母表示类名),因此可以访问其父类的成员。