案例:
public class exer1 {
JFrame s=new JFrame("练习");
//菜单
JMenuBar jMenuBar=new JMenuBar();
JMenu wenjian=new JMenu("文件");
JMenu bianji=new JMenu("编辑");
JMenuItem zidong=new JMenuItem("自动换行");
JMenuItem fuzhi=new JMenuItem("复制");
JMenuItem zhantie=new JMenuItem("粘贴");
JMenu geshi=new JMenu("格式");
JMenuItem zhushi=new JMenuItem("注释");
JMenuItem quxiao=new JMenuItem("取消注释");
//文本域
JTextArea text=new JTextArea(10,30);
//列表
String[] ss={"红色","白色","紫色"};
JList colorlist=new JList<>(ss);
//组件
JComboBox colorselect=new JComboBox<>(ss);
ButtonGroup bg=new ButtonGroup();
JRadioButton b1=new JRadioButton("男",true);//默认选中
JRadioButton b2=new JRadioButton("女",false);
//复选框
JCheckBox checkBox=new JCheckBox("是否已婚",true);
//最下方
JTextField tf=new JTextField(40);
JButton button=new JButton("确定",new ImageIcon("D:\\idea\\project\\pro1\\exercise1\\src\\ok.png"));
//声明鼠标右键点击的菜单
JPopupMenu popupMenu=new JPopupMenu();
ButtonGroup bb=new ButtonGroup();
JRadioButtonMenuItem metal=new JRadioButtonMenuItem("metal风格");
JRadioButtonMenuItem nimbus=new JRadioButtonMenuItem("nimbus风格");
JRadioButtonMenuItem windows=new JRadioButtonMenuItem("windows风格");
JRadioButtonMenuItem windoowsclassic=new JRadioButtonMenuItem("windows经典风格");
JRadioButtonMenuItem motif=new JRadioButtonMenuItem("motif经典风格");
public void init(){
//开始组装
JPanel p1=new JPanel();
p1.add(tf);
p1.add(button);
s.add(p1,BorderLayout.SOUTH);
//关于选择的组件
JPanel selectpanel=new JPanel();
selectpanel.add(colorselect);
bg.add(b1);
bg.add(b2);
selectpanel.add(b1);
selectpanel.add(b2);
selectpanel.add(checkBox);
//文本域和选择相关
Box topleft=Box.createVerticalBox();
topleft.add(text);
topleft.add(selectpanel);
//组装顶部
Box top=Box.createHorizontalBox();
top.add(topleft);
top.add(colorlist);
s.add(top);
//开始组装顶部菜单
geshi.add(zhushi);
geshi.add(quxiao);
bianji.add(zidong);
//加横线
bianji.addSeparator();
bianji.add(fuzhi);
bianji.add(zhantie);
//加横线
bianji.addSeparator();
bianji.add(geshi);
jMenuBar.add(wenjian);
jMenuBar.add(bianji);
s.setJMenuBar(jMenuBar);
//组装鼠标右键菜单
popupMenu.add(metal);
popupMenu.add(nimbus);
popupMenu.add(windows);
popupMenu.add(windoowsclassic);
popupMenu.add(motif);
ActionListener listener=new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//当前选择的是哪种风格
String ss=e.getActionCommand();
try {
change(ss);
} catch (UnsupportedLookAndFeelException unsupportedLookAndFeelException) {
unsupportedLookAndFeelException.printStackTrace();
} catch (ClassNotFoundException classNotFoundException) {
classNotFoundException.printStackTrace();
} catch (InstantiationException instantiationException) {
instantiationException.printStackTrace();
} catch (IllegalAccessException illegalAccessException) {
illegalAccessException.printStackTrace();
}
}
};
metal.addActionListener(listener);
nimbus.addActionListener(listener);
windows.addActionListener(listener);
windoowsclassic.addActionListener(listener);
motif.addActionListener(listener);
popupMenu.add(metal);
popupMenu.add(nimbus);
popupMenu.add(windows);
popupMenu.add(windoowsclassic);
popupMenu.add(motif);
//添加在文本区域右键出现菜单,这个不用在判断,直接设置即可
text.setComponentPopupMenu(popupMenu);
//关闭程序
s.setDefaultCloseOperation(3);
s.pack();
s.setVisible(true);
}
private void change(String command) throws UnsupportedLookAndFeelException, ClassNotFoundException, InstantiationException, IllegalAccessException {
//定义的这个方法用来改变界面风格
switch (command){
case "metal风格":
UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
break;
case "nimbus风格":
UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
break;
case "windows风格":
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
break;
case "windows经典风格":
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel");
break;
case "motif风格":
UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
break;
}
//刷新组件的外观
SwingUtilities.updateComponentTreeUI(s.getContentPane());
SwingUtilities.updateComponentTreeUI(popupMenu);
SwingUtilities.updateComponentTreeUI(jMenuBar);
}
}
猜你喜欢
网友评论
- 搜索
- 最新文章
- 热门文章

