[英]How to add a listener to a button from a ActionListener inner class?
我試圖通過在netbeans上構建我的swing接口來做一個簡單的計算器程序。
我想參加3個課程:
為簡單起見,我將為單個按鈕發布代碼。 我的目標是將Buttons可見文本從“ 1”更改為“ 11”以測試我的設計。 確認我的設計正常后,我將繼續處理其他按鈕。
CalculatorGUI.class
import javax.swing.JButton;
public class calculatorGUI extends javax.swing.JFrame {
public calculatorGUI() {
initComponents();
}
private void initComponents() {
oneBtn = new javax.swing.JButton();
oneBtn.setText("1");
}
private javax.swing.JButton oneBtn;
public JButton getOneBtn() {
return oneBtn;
}
public void setOneBtn(String name) {
oneBtn.setText(name);
}
}
偵聽器類
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class Listener {
class oneBtnListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent ev) {
calculatorGUI g = new calculatorGUI();
g.setOneBtn("11");
}
}
}
引導類
public class Boot {
public static void main(String[] args) {
calculatorGUI gui = new calculatorGUI();
Listener listen = new Listener();
Listener.oneBtnListener oneListen = listen.new oneBtnListener();
gui.getOneBtn().addActionListener(oneListen);
gui.setVisible(true);
}
}
問題是,單擊按鈕后什么也沒發生。 似乎沒有將actionListener注冊到該按鈕。 我可以在我錯過的哪個角度要求您的幫助嗎?
我看到的問題是你如何初始化calculatorGUI
兩次,使用默認值,另一個改變的值一次。 取出的初始化calculatorGUI
監聽器類中,並從您傳遞Boot class
,它應該工作的罰款。
雖然如果您是我,我會在GUI類中添加GUI實現,但在主函數中使用的偵聽器類中添加它卻不是我以前見過的,並且可能不建議這樣做。
相應地修改您的代碼,
class Listener {
class oneBtnListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent ev) {
if(ev.getActionCommand() == "1")
{
JButton btn = (JButton)ev.getSource();
btn.setText("11");
}
}
}
}
class calculatorGUI extends javax.swing.JFrame {
public calculatorGUI() {
initComponents();
}
private void initComponents() {
oneBtn = new javax.swing.JButton();
oneBtnListener btnListener = new Listener().new oneBtnListener();
oneBtn.setText("1");
oneBtn.setBounds(100,100,100,25);
oneBtn.addActionListener(btnListener);
add(oneBtn);
setLayout(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400,400);
}
private javax.swing.JButton oneBtn;
public JButton getOneBtn() {
return oneBtn;
}
public void setOneBtn(String name) {
oneBtn.setText(name);
}
}
您現在可以根據需要更改其他部分,我只給了您“ 1”->“ 11”,但您可以做更多。
祝你好運。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.