5

我在面板上有许多组件,我想对不同的组件应用不同的外观和感觉。是否可以?

4

4 回答 4

6

是的,

你能行的。请参阅混合外观

不建议这样做,坦率地说,这很丑陋。你为什么想这么做?你有什么具体想做的吗?也许有更好的方法。

于 2012-05-18T11:35:58.307 回答
5

我在面板上有许多组件,我想对不同的组件应用不同的外观和感觉。是否可以?

是的是可能的,不要这样做,因为大多数外观和感觉都有不同

  • 颜色、字体、前景、背景

  • 屏幕上的大小或 PreferredSize

  • 为 LayoutManager 使用 API 中的另一种方法

  • 在 JCOMponents API 中实现了各种方法,例如 Color、Font、Foreground、Background

  • 简单的答案---> 有可能在屏幕上造成一团糟

我建议使用今天的Java Look and Feels,它们中的大多数都有各种颜色主题,其中一部分是单独的主题并可以选择更改颜色主题,然后您可以混合内置主题或/和每个颜色主题JComponents

我认为你可以成功设置颜色、字体、前景、仅背景、外观和感觉需要有关 JComponents 和/与 LayoutManagers 如何协同工作的基本知识

于 2012-05-18T12:15:41.533 回答
1

我知道我迟到了,但我认为有人可能会使用它,这是我用来为应用程序添加多种外观的一种技巧:在启动项目之前将其作为外观选择器(在编写之前 = 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();
}

像这样只有按钮测试将具有窗口的外观和感觉,其余的将具有金属的外观和感觉。

希望这个黑客可以帮助某人。

于 2018-08-18T06:04:13.353 回答
0

你不能。在你运行你的java应用程序之前,JVM只会加载一次swingpropertitirs.propertities(一个位于你jre/lib中的文件),它只会选择你的默认L&F,但是如果你通过添加代码来设置你的外观,它会使用您选择的 L&F。

于 2012-05-18T11:43:36.893 回答