gpt4 book ai didi

java - MouseEntered 和 MouseExited 不起作用

转载 作者:行者123 更新时间:2023-11-30 03:34:47 24 4
gpt4 key购买 nike

我在处理 mouseExited 和 mouseEntered 事件时遇到问题。他们没有被处决。我知道这是因为 setLayout。如果我评论它,问题就会消失。这是我的代码:

 public class Test{

public static void main(String[] args) {
new Test();
}

public Test() {
JFrame frame = new JFrame();
frame.setContentPane(new Pane());
frame.getContentPane().setBackground(Color.GRAY);
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setUndecorated(true);
frame.setVisible(true);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

public class Pane extends JPanel{
public Pane(){
ImageIcon start = new ImageIcon("Start.png");
JLabel bStart = new JLabel(start);
ImageIcon exit = new ImageIcon("Exit.png");
JLabel bExit = new JLabel(exit);
setLayout(new BorderLayout());

add(bStart, BorderLayout.CENTER);
bStart.addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent e){
ImageIcon image = new ImageIcon("Start-Pressed.png");
bStart.setIcon(image);
Container parent = bStart.getParent();
parent.remove(bStart);
add(bExit);
parent.revalidate();
parent.repaint();
}

public void mouseEntered(MouseEvent arg0) {
ImageIcon image = new ImageIcon("Start-Hover.png");
bStart.setIcon(image);
}


public void mouseExited(MouseEvent arg0) {
ImageIcon image = new ImageIcon("Start.png");
bStart.setIcon(image);
}
});
bExit.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
System.exit(0);
}

public void mouseEntered(MouseEvent e){
ImageIcon image = new ImageIcon("Exit-Hover.png");
bExit.setIcon(image);

}
public void mouseExited(MouseEvent e){
ImageIcon image = new ImageIcon("Exit.png");
bExit.setIcon(image);
}
});
}
}
}

最佳答案

And i know it is because of the setLayout. If i comment it, the problem dissapears.

我怀疑布局有问题。如果该组件出现,则布局管理器与 MouseEvents 的生成方式无关。

从您的代码看来,您正在尝试提供翻转效果。您可以使用 JButton 并为不同的翻转效果设置图标,而不是使用 JLabel:

button.setBorderPainted( false );
button.setRolloverEnabled( true );
button.setRolloverIcon( ... );
button.setRolloverSelectedIcon(...);
button.setSelectedIcon(...);

那么就不需要管理 MouseListener,因为 UI 会为您做这件事。

要处理 mousePressed,您应该在 JButton 上使用 ActionListener。阅读 Swing 教程中关于 How to Write an ActionListener 的部分了解更多信息。

关于java - MouseEntered 和 MouseExited 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28253087/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com