我的FatherPanel
通过鼠标输入(红色)/退出(橙色)鼠标事件改变颜色。它工作的很好,但是当我输入按钮“Testbutton”(这是我的父面板的子组件)时,出现鼠标退出事件。但我仍然在我的父亲小组内。如何避免子GUI对象接管鼠标侦听器?
有人可以解释我为什么以及如何解决这样的问题?
只要鼠标在该面板内(无论鼠标是否在子对象上),我都希望父面板为橙色。
public class MainFrame extends JFrame {
public MainFrame() {
FatherPanel fatherPanel = new FatherPanel();
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(800, 700);
setLayout(null);
add(fatherPanel);
fatherPanel.setBounds(150, 20, 300, 300);
}
public class FatherPanel extends JPanel{
JButton btn1 = new JButton("Testbutton");
public FatherPanel() {
setSize(300, 300);
setLayout(null);
setBackground(Color.RED);
add(btn1);
btn1.setBounds(150, 150, 100, 100);
addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
setBackground(Color.RED);
}
@Override
public void mouseEntered(MouseEvent e) {
setBackground(Color.ORANGE);
}
@Override
public void mouseClicked(MouseEvent e) {
}
});
}
}
}
你还可以添加一个MouseListener的哪个编辑父亲面板 – XtremeBaumer
Java的图形用户界面有不同的OS”,屏幕大小,屏幕分辨率等方面的工作在不同的地区使用不同PLAFs颜色的按钮。因此,它们不利于像素的完美布局。请使用布局管理器或[它们的组合](http://stackoverflow.com/a/5630271/418556)以及[white space]的布局填充和边框(http://stackoverflow.com/a/17874718/ 418556)。 –
@XtremeBaumer:我想过,但是我必须对每个子组件做这件事。必须有一个更简单的方法... – Serek