我有這個初學者的專案。這次我從基礎開始。
源代碼:https ://github.com/kontext66/GuwiPos/blob/main/GuwiPos
該按鈕使用 lambda 方法可以正常作業:
buttonBasket.addActionListener(e -> System.out.println("Item Added to Basket!: ");
但是當我嘗試使用actionPerformedhere列印出的內容時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());
}
uj5u.com熱心網友回復:
挖掘您的代碼,我看到您宣告了一個實體變數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();
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/429907.html
