Java - 外观

为了使我们的应用程序看起来更漂亮,Swing 体系结构通过将每个组件分成两个不同的类来更改应用程序或 GUI 的外观:JComponent ComponentUI。例如,JList 的每个实例都有一个具体的 ListUI 实现,该实现继承自 ComponentUI.

超类,请使用以下方法: UIManager.setLookAndFeel(LookAndFeel l )以 LookAndFeel 类名为参数。

更改后,需要通过调用方法更新组件树 SwingUtilities.updateComponentTreeUI(框架);

Example

在此示例中,我们将声明一个 LOOKANDFEEL 常量,该常量将包含以下有效值之一:Metal、System、Pattern 和 GTK。此代码在 Eclipse 和 Netbeans 下工作。

import javax.swing.*;
导入 java.awt.*;

public class LookAndFeelTest extends JFrame{

public LookAndFeelTest(){
//初始化 lookandfeel
initLookAndFeel();
//确保学习已应用
JFrame.setDefaultLookAndFeelDecorated(true);

//创建并配置window
JFrame frame = new JFrame(SwingApp”);
组件内容 = createComponents();
frame.getContentPane().add(contents, BorderLayout.CENTER);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

SwingUtilities.updateComponentTreeUI(框架);
//显示窗口
frame.pack();
frame.setVisible(true);
}

/*
* 通过设置
指定要使用的 lookandfeel 外观 * LOOKANDFEEL 常量
*/
final static String LOOKANDFEEL = Metal”;

public Component createComponents() {
JButton button = new JButton(Button”);
JLabel 标签 = new JLabel(LOOKANDFEEL);

JPanel 面板 = new JPanel(new GridLayout(0, 1));
panel.add(按钮);
panel.add(label);
panel.setBorder(BorderFactory.createEmptyBorder(30,30,10,30));

返回面板;
}

私有静态 void initLookAndFeel() {
String lookAndFeel = null;

if(LOOKANDFEEL != null) {
switch(LOOKANDFEEL){
Metal” box:lookAndFeel = UIManager.getCrossPlatformLookAndFeelClassName();
遗产;
系统”:lookAndFeel = UIManager.getSystemLookAndFeelClassName();
遗产;
模式”:lookAndFeel = com.sun.java.swing.plaf.pattern.PatternLookAndFeel”;
遗产;
框 GTK”:lookAndFeel = com.sun.java.swing.plaf.gtk.GTKLookAndFeel”;
遗产;
}

try {
UIManager.setLookAndFeel(lookAndFeel);
}
catch (异常 e) {
e.printStackTrace();
}
}
}

public static void main(String[] args) {
new LookAndFeelTest();
}
}
Output:
look

System

如果您想保留操作系统的原始主题,如此示例所示,以恢复 Windows 7.

lookAndFeel = UIManager.getSystemLookAndFeelClassName();
out:
look

Motif

lookAndFeel=com.sun.java.swing.plaf.motif.MotifLookAndFeel”;
out:
外观和感觉

References:
Oracle 文档:如何设置外观。
Developpez.net:Java GUI:Look &感觉