访问 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);
}
}
希望对有需要的人有所帮助:)
我有一个简单的程序,我正在尝试从文本字段访问数据,但我总是得到 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);
}
}
希望对有需要的人有所帮助:)