将新UI应用于JInternalFrame标题

时间:2014-03-30 05:09:34

标签: java swing uimanager

我之前从未做过任何关于UI的事情,而且我的任务是改变我们的内部框架标题。我们正在使用Nimbus L& F,并且在我的用户界面管理器中我已尝试

UIManager.put("InternalFrameTitlePane.background", Color.RED);

只是为了尝试改变一些事情。这对我没用,我发现了另一篇关于使用BasicInternalFrameTitlePane创建UI的帖子,所以我现在有了这段代码:

public class CFrameTitleUI extends BasicInternalFrameTitlePane {

    public CFrameTitleUI(JInternalFrame f)
    {
        super(f);
    }

    @Override
    public void paintTitleBackground(Graphics g)
    {
        g.setColor(Color.RED);
        g.fillRect(0, 0, getWidth(), getHeight());
    }
}

但是现在我有这个,我不知道该怎么做。我尝试使用它的setUI()方法在内部框架中设置用户界面,但这是一个标题栏,所以我确定这是错误的。我接下来试过

UIManager.put("InternalFrameTitlePane.background", CFrameTitleUI.getClass().getName());

UIManager.put("InternalFrameTitlePane", CFrameTitleUI.getClass().getName());

但没有。我是否需要以某种方式将它绑回到雨云L& F?我们设置的一些内容会说"nimbusSelection"等。

主要问题是我是否正确地为内部框架标题创建自定义UI以及如何应用它,谢谢。

1 个答案:

答案 0 :(得分:0)

你得到同样的结果吗?

enter image description here

public class InternalFrameTest extends JFrame {

    public InternalFrameTest() {

        JDesktopPane desktop = new JDesktopPane();
        JInternalFrame frame = new JInternalFrame("AHHHH!!!!", true);
        frame.setSize(300, 300);
        frame.setVisible(true);
        frame.setOpaque(false);
        desktop.add(frame);
        setContentPane(desktop);
        setSize(600, 600);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
    }

    public static void main(String[] args) {
        try {
            UIManager.setLookAndFeel(NimbusLookAndFeel.class.getName());
        } catch (ClassNotFoundException|InstantiationException
                |IllegalAccessException|UnsupportedLookAndFeelException e) {
            e.printStackTrace();
        }
        UIManager.put("InternalFrame:InternalFrameTitlePane[Enabled].textForeground", Color.RED);
        new InternalFrameTest();
    }
}

当我跑步时(没有设置任何东西)

System.out.println(UIManager.getColor("InternalFrame:InternalFrameTitlePane[Enabled].textForeground"));

我得到了

"DerivedColor(color=142,143,145 parent=nimbusDisabledText offsets=0.0,0.0,0.0,0 pColor=142,143,145"

你得到同样的结果吗?