Java 是否可以为不同的组件设置不同的外观?
我在面板上有许多组件,我想对不同的组件应用不同的外观和感觉。可能吗?是的 你能做到。看 但是Java 是否可以为不同的组件设置不同的外观?,java,swing,look-and-feel,Java,Swing,Look And Feel,我在面板上有许多组件,我想对不同的组件应用不同的外观和感觉。可能吗?是的 你能做到。看 但是 这是不推荐的,坦率地说,这很难看。你为什么要这么做?你有什么特别想做的吗?也许有更好的办法。不,你不能。在运行java应用程序之前,JVM只会加载SwingPropertyTirs.properties(位于jre/lib中的文件)一次,并且它只会选择默认的L&F,但是如果通过添加代码来设置外观,它将使用您选择的L&F 我在面板上有许多组件,我想对不同的组件应用不同的外观和感觉。可能吗 是的,这是可能的
这是不推荐的,坦率地说,这很难看。你为什么要这么做?你有什么特别想做的吗?也许有更好的办法。不,你不能。在运行java应用程序之前,JVM只会加载SwingPropertyTirs.properties(位于jre/lib中的文件)一次,并且它只会选择默认的L&F,但是如果通过添加代码来设置外观,它将使用您选择的L&F 我在面板上有许多组件,我想对不同的组件应用不同的外观和感觉。可能吗 是的,这是可能的,不要这样做,因为大多数的外观和感觉都有所不同
- 颜色、字体、前景、背景
- 屏幕上的大小或首选大小
- 对LayoutManager使用API中的其他方法
- 在JCOmponents API中实现了各种方法,例如颜色、字体、前景、背景
- 简单的回答--->可能会在尖叫声中造成一片混乱
我认为成功后,你可以设置颜色、字体、前景、背景、外观和感觉,这是关于JComponents和/或与LayoutManager一起工作所需的基本知识我知道我迟到了,但我想可能有人在使用这一技术,我使用这种技术在应用程序中添加多重外观和感觉: 在启动项目之前(写入之前=新建…)将此项置于“外观选择器”中 然后将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();
}
像这样,只有按钮测试将具有窗口的外观和感觉,其余将具有金属的外观和感觉
希望这个黑客可以帮助别人。当然可以。但我不知道怎么做。另外,你的问题有点含糊不清1)混合PLAFs通常是个坏主意2)哪个PLAFs,为什么?也许他的意思是他想要模拟一个实际的控制面板。不同的控件彼此不同是很常见的。@TonyEnnis可能是这个,可能是那个,可能是另一个。我想知道OP的实际用例是什么。@AndrewThompson和我一样。我提出了这个建议,因为下面的答案暗示OP是疯狂的。:-)“不,你不能。”虽然这样做是不可取的,但这完全是不正确的。
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();
}