手动设置Swing JInternalFrame lnf

时间:2010-02-02 12:30:55

标签: java swing look-and-feel jinternalframe jdesktoppane

UIManager.put("InternalFrame.activeTitleBackground", new ColorUIResource(new Color(207,255,247)));
UIManager.put("InternalFrame.inactiveTitleBackground", new ColorUIResource(new Color(207,255,247)));
JDesktopPane baTabbedPane = new JDesktopPane();
JInternalFrame iframe = new JInternalFrame("Cheapest To Deliver",true,true,true,true);
iframe.setSize(400,150);
baTabbedPane.add(iframe);

为什么我的内部框架的标题背景没有在启动时设置?

我已尝试在整体JFrame初始化设置它但没有任何区别(相比之下,我可以在此位置更改其他JFrame ui组件外观,例如MenuItem.background我认为可能是因为JInternalFrame不是顶级组件,即在选项卡式窗格下,可能需要在其他位置进行更改,但在哪里?)

有关为UIManager.put()致电JInternalFrame的正确位置的任何提示吗?

2 个答案:

答案 0 :(得分:3)

最终得到它 - 在创建JInternalFrame之后调用put()工作正常但我在将组件添加到容器之前确实已经完成了。然后,我仍然必须设置它的UI:

JInternalFrame iframe = new JInternalFrame("blah",true,true,true,true);
UIManager.put("InternalFrame.activeTitleBackground", new ColorUIResource(new Color(248,250,175)));
UIManager.put("InternalFrame.inactiveTitleBackground", new ColorUIResource(new Color(248,250,175)));
javax.swing.plaf.basic.BasicInternalFrameUI ui = 
    new javax.swing.plaf.basic.BasicInternalFrameUI(iframe); 
iframe.setUI(ui); 

答案 1 :(得分:1)

我认为在创建任何Swing组件之前,您需要对UIManager.put进行所有调用。