所以我有两个按钮,
JButton playB = new JButton(new ImageIcon("res/playA.png"));
playB.setBorder(BorderFactory.createEmptyBorder());
playB.setContentAreaFilled(false);
JButton playA = new JButton(new ImageIcon("res/playA.png"));
playA.setBorder(BorderFactory.createEmptyBorder());
playA.setContentAreaFilled(false);
我如何创建它以便当我将鼠标移到按钮A上时它会切换到按钮B?我能想到的只是使用鼠标监听器,但我想知道是否会有更好的方法。
答案 0 :(得分:2)
当我将鼠标移到按钮A上时,我将如何创建它 切换到按钮B?我能想到的只是使用鼠标 听众,但我想知道是否会有更好的方式。
注意:setRolloverIcon方法不能用于此。
这个想法,用两个JButton切换不是......,也不是使用MouseListener,因为所有鼠标和键事件都是在JButtons APi中实现的并且正确
将JButton.setRolloverIcon与来自ButtonModel的事件一起使用,输出应该是两个Swing Action而不是在运行时添加的两个JButton
,以及ActionListener
}Š
e.g。
JButton.getModel().addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
ButtonModel model = (ButtonModel) e.getSource();
if (model.isRollover()) {
//doSomething
} else if (model.isPressed()) {
//doSomething
} // etc
}
});
修改
再次回来
当我将鼠标移到按钮A上时,我将如何创建它 切换到按钮B?我能想到的只是使用鼠标 听众,但我想知道是否会有更好的方式。
结论然后第一个JButton (button A)
不是,从Mouse
或KeyEvent
用户身上永远不可访问,因为这些事件都会(直接)到roll_over
,
然后只有一种方式,从JButton.doClick()
s以编程方式KeyBinding
调用,但仍然存在问题何时,如何以及为何原因......使简单的事情复杂化