我正在尝试将 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等等。这是创建应用程序的好方法,还是您建议以其他方式划分它?
您可以在下面找到我迄今为止编写的应用程序的代码:
主.java
package 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
动作控制器.java
package sample.applicationLayout;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
料青山看我应如是
相关分类