亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將 JButton ActionListener添加到另一個 *.java 文件中的按鈕不起作用

將 JButton ActionListener添加到另一個 *.java 文件中的按鈕不起作用

當年話下 2022-10-12 10:20:55
我正在嘗試將 ActionListener 添加到在另一個 *.java 文件中定義的 JButton,但它不起作用。如果我從 Main 公共類調用這個 JButton 它工作得很好,我錯過了什么?我正在使用 Java Swing 構建一個簡單的繪畫應用程序。我已將代碼分成幾個 *.java 文件以使其更具可讀性。JButtons 在 SideBar.java 文件中定義,我想添加 ActionController.java 文件,該文件將調用 JButtons 的所有 actionListener。但是當我添加 .addActionListener() 的代碼(在 ActionController.java 文件中)時,當我按下按鈕時沒有任何反應。但是,當我在 Main.java 文件中添加相同的代碼時,按下的按鈕工作得很好。有人可以告訴我我錯過了什么嗎?我還有另一個關于代碼可讀性的問題。我是Java新手,所以我的問題是把代碼分成這么多類的邏輯是否好?我創建了一個 Main 類來定義應用程序的框架,SideBar.java 將包含側邊欄的所有布局,TopMenu.java 將包含應用程序的菜單,DrawingArea.java 將是空白的圖形應用程序的紙張,Draw.java 將包含繪圖的所有功能(調整鉛筆大小,選擇顏色),以及將所有功能(在 Draw.java 文件中定義)分配給按鈕、滑塊的 AcionController.java等等。這是創建應用程序的好方法,還是您建議以其他方式劃分它?您可以在下面找到我迄今為止編寫的應用程序的代碼:主.javapackage sample;import sample.applicationLayout.ActionController;import sample.applicationLayout.DrawingArea;import sample.applicationLayout.TopMenu;import sample.applicationLayout.SideBar;import javax.swing.*;import java.awt.*;public class Main {    Main() {        //creating Frame for the application        JFrame frame = new JFrame("Paint Application");        //creating menu        TopMenu menu = new TopMenu();        frame.setJMenuBar(menu);        //END OF MENU        SideBar sideBar = new SideBar();        DrawingArea drawingArea = new DrawingArea();        ActionController actionController = new ActionController();        actionController.clickOnButtons();        frame.add(sideBar, BorderLayout.WEST);        frame.add(drawingArea, BorderLayout.CENTER);        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        frame.setSize(1200, 800);        frame.setLocationRelativeTo(null);        frame.setVisible(true);    }//end of Main()    public static void main(String[] args) {        new Main();    }//end of public static void main(String[] args)}//end of Main class動作控制器.javapackage sample.applicationLayout;import javax.swing.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;
查看完整描述

1 回答

?
料青山看我應如是

TA貢獻1772條經驗 獲得超8個贊

好的!我再次回答我自己的問題:) 但我想出了答案,也許它會幫助別人。問題在于兩次初始化 SideBar 類,一次在 Main.java 文件中,第二次在 ActionController.java 文件中。我更改了以下代碼:


在 Main.java 文件中:


actionController.clickOnButtons();

變成:


actionController.clickOnButtons(sideBar);

在 ActionController.java 文件中:


SideBar sideBar = new SideBar();

ListenForButton listenForButton = new ListenForButton();


public ActionController() {

}


public void clickOnButtons() {

    sideBar.getButton_pencil().addActionListener(listenForButton);


}

變成:


ListenForButton listenForButton = new ListenForButton();


public ActionController() {

}


public void clickOnButtons(SideBar sideBar) {

    sideBar.getButton_pencil().addActionListener(listenForButton);


}

也許這會在未來給其他人一個提示。


查看完整回答
反對 回復 2022-10-12
  • 1 回答
  • 0 關注
  • 127 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號