我之前从未做过任何关于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以及如何应用它,谢谢。
答案 0 :(得分:0)
你得到同样的结果吗?
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"
你得到同样的结果吗?