1

所以我有两个按钮,

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?我所能想到的就是使用鼠标侦听器,但我想知道是否有更好的方法。

4

1 回答 1

2

我将如何创建它以便当我将鼠标移到按钮 A 上时它会切换到按钮 B?我所能想到的就是使用鼠标侦听器,但我想知道是否有更好的方法。

注意: setRolloverIcon 方法不能用于此。

  • 这个想法,用两个JButton切换不是......,也不是使用MouseListener,因为所有鼠标和按键事件都在 JButtons APi 中实现并且正确

  • JButton.setRolloverIcon与来自ButtonModel的事件一起使用,输出应该是两个Swing Action s,而不是JButton在运行时添加的两个 s,并且带有ActionListeners

例如

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)不是,永远不会在用户端从Mouseor KeyEvents 访问,因为这两个事件都会(立即)到roll_over,

  • 那么只有一种方法,JButton.doClick()KeyBindings 以编程方式调用,但仍然存在问题,何时,如何以及为什么原因......使简单的事情复杂化

于 2013-10-14T10:12:14.637 回答