如何来回更改Java Swing Nimbus按钮文本前景色?

时间:2015-07-10 20:00:52

标签: java swing

我的 Nimbus L& F 设置中有 JButton MouseListener 。我可以在鼠标输入时更改文字颜色,但在鼠标退出时无法更改颜色或另一种颜色。从打印出来,我确信调用了mouseExit。

任何人都可以帮我找出原因吗?

我想在调用mouseEntered()之后,btn_f不再是Nimbus L& F.我不知道我的猜测是否有意义。

代码喜欢这个:

@Override
    public void mouseEntered(MouseEvent e) {
        Object resource = e.getSource();
        if(resource == btn_f)
        {
            System.out.println("@@@@@@@@@@@@@====btn_f is enterred");
            UIDefaults defaults = new UIDefaults();
            defaults.put("Button.textForeground", Color.BLUE);
            btn_f.putClientProperty("Nimbus.Overrides", defaults);
            //btn_f.putClientProperty("Nimbus.Overrides.InheritDefaults", false);
            //SwingUtilities.updateComponentTreeUI(btn_f);

        }
    }

    @Override
    public void mouseExited(MouseEvent e) {

        Object resource = e.getSource();
        if(resource == btn_f)
        {
            System.out.println("@@@@@@@@@@@@@====btn_f is exited");
            UIDefaults defaults = new UIDefaults();
            defaults.put("Button.textForeground", Color.RED);
            btn_f.putClientProperty("Nimbus.Overrides", defaults);
            //btn_f.putClientProperty("Nimbus.Overrides.InheritDefaults", false);
            //SwingUtilities.updateComponentTreeUI(btn_f);
        }
    }

1 个答案:

答案 0 :(得分:0)

简单的btn_f.setForeground( theColor );同时适用于输入和mouseEntered()以及mouseExited()