【发布时间】:2015-04-28 00:27:19
【问题描述】:
我创建了一个 JFrame,其 JPanel 包含不同的组件,例如,当鼠标位于 JPanel 的边界内时,我希望 JPanel 具有可见边框和可见图像。我的问题是,只要鼠标悬停在 JPanel 内的“可交互”组件上,它就会在鼠标退出 JPanel 时注册。我希望它在 JPanel 的边界内绘制这些东西,并且当鼠标退出 JPanel 的边界时,边框和图像“消失”。有什么方法可以实现吗?
这是一个小演示:
public class Test {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
new TestFrame();
}
static class TestFrame extends JFrame{
JPanel panel;
JButton hoverButton;
JButton appearingButton;
public TestFrame() {
super();
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
panel = new JPanel();
panel.setBackground(Color.red);
hoverButton = new JButton("Hover me!");
appearingButton = new JButton("I appeared!");
appearingButton.setVisible(false);
panel.add(hoverButton);
panel.add(appearingButton);
panel.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseEntered(java.awt.event.MouseEvent evt) {
System.out.println("Entered!");
appearingButton.setVisible(true);
}
public void mouseExited(java.awt.event.MouseEvent evt) {
System.out.println("Exited!");
appearingButton.setVisible(false);
}
});
add(panel);
setSize(new Dimension(200, 200));
setVisible(true);
}
}
}
当鼠标进入 JPanel(覆盖整个 JFrame)时,第二个按钮将出现。然而,将鼠标悬停在第一个按钮上会使第二个按钮消失。只要您在 JPanel 的范围内,我希望显示第二个按钮。
【问题讨论】: