如何在秋千中创建翻转按钮

时间:2013-10-14 09:52:02

标签: java swing jbutton rollover

所以我有两个按钮,

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

1 个答案:

答案 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)不是,从MouseKeyEvent用户身上永远不可访问,因为这些事件都会(直接)到roll_over

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