外观
其他Swing知识
设置窗体UI
默认的Swing窗体风格为Metal类型,可以通过使用UIManager类提供的设置UI的方法改变窗体的外观。
UIManager提供了几个静态方法用于获取和改变外观:
UIManager.getCrossPlatformLookAndFeelClassName():获取Java的外观和感觉UIManager.setLookAndFeel():设置UI组件的外观。JFrame.setDefaultLookAndFeelDecorated(boolean b):改变框架的外观和感觉。
windows环境下可以用下面两种方法使窗口显示windows风格窗口
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
除此之外,还可以利用UIManager将UI改变为如下样式:
| 外观 | 代码 |
|---|---|
| Metal风格(默认) | String lookAndFeel ="javax.swing.plaf.metal.MetalLookAndFeel";UIManager.setLookAndFeel(lookAndFeel); |
| Windows风格 | String lookAndFeel ="com.sun.java.swing.plaf.windows.WindowsLookAndFeel";UIManager.setLookAndFeel(lookAndFeel); |
| Windows Classic风格 | String lookAndFeel ="com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel";UIManager.setLookAndFeel(lookAndFeel); |
| Motif风格 | String lookAndFeel ="com.sun.java.swing.plaf.motif.MotifLookAndFeel";UIManager.setLookAndFeel(lookAndFeel); |
| Mac风格 (需要在相关的操作系统上方可实现) | String lookAndFeel ="com.sun.java.swing.plaf.mac.MacLookAndFeel";UIManager.setLookAndFeel(lookAndFeel); |
| GTK风格 (需要在相关的操作系统上方可实现) | String lookAndFeel ="com.sun.java.swing.plaf.gtk.GTKLookAndFeel";UIManager.setLookAndFeel(lookAndFeel); |
| 可跨平台的默认风格 | String lookAndFeel =UIManager.getCrossPlatformLookAndFeelClassName();UIManager.setLookAndFeel(lookAndFeel); |
使窗体位于屏幕正中央
使用下面的代码即可实现。
package swing;
import javax.swing.*;
import java.awt.*;
class SetFrameAtCenter extends JFrame { //设置窗体默认显示在屏幕中间
SetFrameAtCenter() {
super("窗口位于屏幕正中央");
int sizeX = 500;
int sizeY = 400;
Toolkit toolkit = Toolkit.getDefaultToolkit(); //获取工具包
Dimension screenSize = toolkit.getScreenSize(); //获取屏幕尺寸
int x = screenSize.width / 2 - sizeX / 2;
int y = screenSize.height / 2 - sizeY / 2;
setBounds(x, y, sizeX, sizeY);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
new SetFrameAtCenter();
}
}销毁窗口
调用窗口对象的dispose()方法即可。
package swing;
import javax.swing.*;
public class JFrameDispose extends JFrame {
//窗口的销毁 使用JFrame对象或子类对象的dispose()方法
JFrameDispose() {
super("自动销毁窗口");
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setBounds(300, 200, 100, 100);
JButton jButton = new JButton("点按按钮销毁此窗口");
jButton.addActionListener(e -> dispose());
getContentPane().add(jButton);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new JFrameDispose().setVisible(true);
}
}