package ch01.section9.ex;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
public class MinueImage extends JFrame{
public MinueImage() {
/**
* java.swing.JMenu是菜单的标题其包含
* java.swing.JMenuItem多个菜单的选项
*/
JMenu thream=new JMenu("窗口风格");
JMenuItem one=new JMenuItem ("系统默认");
JMenuItem two=new JMenuItem ("linux");
JMenuItem three=new JMenuItem ("java");
thream.add(one);
thream.add(two);
thream.add(three);
/**
* 为每个菜单选项添加事件
*/
one.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
changFace("system");
}});
two.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
changFace("linux");
}});
three.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
changFace("java");
}});
/**
* java.swing.JMenu是菜单栏的大的子菜单选项(类似与“文件”、“编辑”、“帮助”等)
* 但是大的子菜单要加到菜单栏中(java.swing.JMenuBar)
*/
JMenuBar jmb=new JMenuBar();
jmb.add(thream);
this.setJMenuBar(jmb);
/**
* 添加一个面板到窗口中
*/
JPanel panel=new JPanel();
/**
* setBorder();是设置窗口的特性的选项
*/
panel.setBorder(BorderFactory.createTitledBorder("窗口样式"));
panel.add(new JTextField(11));
panel.add(new JCheckBox("football"));
panel.add(new JCheckBox("basketball"));
panel.add(new JCheckBox("pinpeng"));
this.add(panel);
this.setSize(220,200);
this.setVisible(true);
this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
}
/**
* 事件处理
* java.swing.UIManager是统一管理界面窗口
* setLookAndFeel("string");将当前的窗口设置成String定义的窗口
*
*/
protected void changFace(String string) {
try {
if(string.equals("system")){
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}else if(string.equals("linux")){
// UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
}else if(string.equals("java")){
UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
}
javax.swing.SwingUtilities.updateComponentTreeUI(this); //更新界面
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[]str){
new MinueImage();
}
}