我在面板上有许多组件,我想对不同的组件应用不同的外观和感觉。是否可以?
4 回答
我在面板上有许多组件,我想对不同的组件应用不同的外观和感觉。是否可以?
是的是可能的,不要这样做,因为大多数外观和感觉都有不同
颜色、字体、前景、背景
屏幕上的大小或 PreferredSize
为 LayoutManager 使用 API 中的另一种方法
在 JCOMponents API 中实现了各种方法,例如 Color、Font、Foreground、Background
简单的答案---> 有可能在屏幕上造成一团糟
我建议使用今天的Java Look and Feels,它们中的大多数都有各种颜色主题,其中一部分是单独的主题并可以选择更改颜色主题,然后您可以混合内置主题或/和每个颜色主题JComponents
我认为你可以成功设置颜色、字体、前景、仅背景、外观和感觉需要有关 JComponents 和/与 LayoutManagers 如何协同工作的基本知识
我知道我迟到了,但我认为有人可能会使用它,这是我用来为应用程序添加多种外观的一种技巧:在启动项目之前将其作为外观选择器(在编写之前 = new ... )
try {
for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
if ("Windows".equals(info.getName())) {
UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException
| UnsupportedLookAndFeelException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
然后将 UIManager 外观返回到在您执行此操作之前它处于打开状态的外观,如下例所示:
JButton test;
try {
for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
if ("Windows".equals(info.getName())) {
UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException
| UnsupportedLookAndFeelException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
test = new JButton();
try {
for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
if ("Mwtal".equals(info.getName())) {
UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException
| UnsupportedLookAndFeelException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
像这样只有按钮测试将具有窗口的外观和感觉,其余的将具有金属的外观和感觉。
希望这个黑客可以帮助某人。
你不能。在你运行你的java应用程序之前,JVM只会加载一次swingpropertitirs.propertities(一个位于你jre/lib中的文件),它只会选择你的默认L&F,但是如果你通过添加代码来设置你的外观,它会使用您选择的 L&F。