package swing;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
/**
* 设置观感
*/
public class PlafTest {
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
PalfFrame frame = new PalfFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
}
class PalfFrame extends JFrame {
public PalfFrame() {
this.setTitle("Palf Test");
this.setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
buttonPanel = new JPanel();
UIManager.LookAndFeelInfo[] infos = UIManager.getInstalledLookAndFeels();
for(UIManager.LookAndFeelInfo info : infos) {
makeButton(info.getName(), info.getClassName());
}
this.add(buttonPanel);
}
private void makeButton(String name, final String className) {
JButton button = new JButton(name);
buttonPanel.add(button);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
try {
UIManager.setLookAndFeel(className);
//刷新所有的组件,显示的传递this
SwingUtilities.updateComponentTreeUI(PalfFrame.this);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public static final int DEFAULT_WIDTH = 300;
public static final int DEFAULT_HEIGHT = 200;
private JPanel buttonPanel;
}