我有一个初学者项目。这一次我从基础开始。
源代码:https://github.com/kontext66/GuwiPos/blob/main/GuwiPos
该按钮在lambda方法下运行良好:buttonBasket.addActionListener(e -> System.out.println("Item Added to Basket!: ");
但是,当我尝试在这里使用actionPerformed
来打印txtGroup
的内容时,它不会显示任何内容。
这是按钮和文本字段[1] :https://i.stack.imgur.com/ADqVp.png
按钮:
JButton buttonBasket = new JButton();
buttonBasket.setBounds(0,0,300,50);
buttonBasket.setText("Add to Basket");
buttonBasket.setFocusable(false);
buttonBasket.setBorder(BorderFactory.createEtchedBorder());
buttonBasket.addActionListener(this);
文本字段:
JTextField txtGroup = new JTextField();
txtGroup.setBounds(130,35,150,40);
actionPerformed
:
@Override
public void actionPerformed(ActionEvent e ){
if(e.getSource()==buttonBasket){
System.out.println("Added Item to Basket: "+txtGroup.getText());
}
仔细阅读您的代码,我看到您在构造函数中声明了一个实例变量buttonBasket
,然后声明一个局部变量buttonBasket
。当您调用buttonBasket.addActionListener(this)
时,您实际上是在向本地buttonBasket
添加侦听器,而全局buttonBasket
是null
。
public class GuwiPos extends JFrame implements ActionListener{
JButton buttonBasket;
GuwiPos(){
JButton buttonBasket = new JButton(); // <=== local variable buttonBasket
buttonBasket.addActionListener(this);
}
public void actionPerformed(ActionEvent e ){
if(e.getSource()==buttonBasket){ //<== buttonBasket is null
System.out.println("Added Item to Basket: "+txtGroup.getText());
}
}
}
解决方案是更改线路:
JButton buttonBasket = new JButton();
至
buttonBasket = new JButton();