我正在尝试实现鼠标侦听器,但是似乎无法正常工作。我的代码没有任何错误,但是当我单击框架时,我没有得到打印出来的消息。我尝试将HandleClassOne类扩展为viewOne,但这也行不通。有什么想法吗?
主类创建一个框架,然后在该框架上创建viewOne的实例。
public class main{
protected static JFrame window;
public static void main(String args[]){
window = new JFrame();
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setSize(400,400);
window.setVisible(true);
new viewOne(window);
}
}
viewOne类将一个面板和一个标签添加到框架。还将鼠标侦听器添加到面板。
public class viewOne {
private static JPanel panel1;
private static JLabel label1;
public viewOne(JFrame frame) {
panel1 = new JPanel();
label1 = new JLabel("View One");
panel1.add(label1);
frame.add(panel1);
panel1.setBackground(Color.red);
frame.validate();
}
public static void mouseAdd() {
HandleClassOne handle = new HandleClassOne();
panel1.addMouseListener(handle);
panel1.addMouseMotionListener(handle);
}
public static void main(String[] args) {
mouseAdd();
}
}
单击viewOne中创建的面板时,HandleClassOne类应打印出一条消息。
public class HandleClassOne extends main implements MouseListener, MouseMotionListener {
public void mouseClicked(MouseEvent e) {
System.out.println("mouse clicked");
}
}
最佳答案
定义函数mouseAdd(...)
后,我看不到您在调用它。
试试(在构造函数内)
public viewOne(JFrame frame) {
...
mouseAdd();
...
}
自然,您需要在设置
panel1
之后执行此操作。请注意,还有其他问题
您没有在
JFrame
类的main
函数中调用正确显示main
的方法。查找有关Java Swing的基础教程,其中讨论了事件分配线程和程序主执行线程中不存在的要求。您在
main
类中还有一个附加的viewOne
函数,这不是如何连接这些东西的。关于java - 无法实现鼠标监听器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48306272/