zoukankan      html  css  js  c++  java
  • Swing组件 创建窗口应用

    package com.swing;
    
    import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.InputEvent;
    
    import javax.swing.*;
    
    
    public class SwingComponent {
    	
    	JFrame f=new JFrame("测试");
    	//定义一个按钮,并为之指定图标
    	Icon okIcon=new ImageIcon("icon/angry.gif");
    	JButton ok=new JButton("确认", okIcon);
    	//定义一个单选按钮,初始处于选中状态
    	JRadioButton male=new JRadioButton("男",true);
    	//定义一个单选按钮,初始处于没有选中状态
    	JRadioButton female=new JRadioButton("女",false);
    	//定义一个ButtonGroup,用于将上面两个JRadioButton组合在一起
    	ButtonGroup bg=new ButtonGroup();
    	//定义一个复选框,初始处于没有选中状态
    	JCheckBox married=new JCheckBox("是否已婚?",false);
        String[] colors=new String[]{"红色","绿色","蓝色"};
    	//定义一个下拉选择框
        JComboBox colorChooser=new JComboBox(colors);
        //定义一个列表选择框
        JList colorList=new JList(colors);
    	//定义一个8行20列的单行文本域
       JTextArea ta=new JTextArea(8,20);
    	//定义一个40列的单行文本域
        JTextField name=new JTextField(40);
    	JMenuBar mb=new JMenuBar();
    	JMenu file=new JMenu("文件"); 
    	JMenu edit=new JMenu("编辑");
    	//创建新建菜单项
    	Icon newIcon=new ImageIcon("icon/ball.gif");
    	JMenuItem newItem=new JMenuItem("新建",newIcon);
    	//创建保存菜单项,并为之指定图标
    	Icon saveIcon=new ImageIcon("icon/bag.gif"); 
    	JMenuItem saveItem=new JMenuItem("保存",saveIcon);
        //退出菜单项
    	Icon editIcon=new ImageIcon("icon/ball1.gif");
    	JMenuItem editItem=new JMenuItem("退出",editIcon);
    	
    	JCheckBoxMenuItem autoWrap=new JCheckBoxMenuItem("自动换行");
    	//创建“复制”菜单项,并为之指定图标
    	JMenuItem copyItem=new JMenuItem("复制",new ImageIcon("icon/book.png"));
    	//创建粘贴菜单项
    	JMenuItem pasteItem	=new JMenuItem("粘贴",new ImageIcon("icon/paste.png"));
    	
    	JMenu format=new JMenu("格式");
    	JMenuItem commentItem=new JMenuItem("注释");
    	JMenuItem cancelItem=new JMenuItem("取消注释");
    	
    	//定义一个右键菜单用于设置程序风格
    	JPopupMenu pop=new JPopupMenu();
    	//用于组合三个风格菜单项的ButtonGroup
    	ButtonGroup flavorGroup=new ButtonGroup();
    	//创建三个单选框按钮,用于设置程序的外观风格
    	JRadioButtonMenuItem metaItem=new JRadioButtonMenuItem("Metal风格",true);
    	JRadioButtonMenuItem widowsItem=new JRadioButtonMenuItem("Widows风格");
    	JRadioButtonMenuItem motifItem=new JRadioButtonMenuItem("Motif风格");
    	
    	//--------------------------用于执行界面初始化的Init方法-------------------------------------------
    	
        public void init(){
        	//创建一个装载 了文本框、按钮的JPanel 
        	JPanel bottom=new JPanel();
        	bottom.add(name);
        	bottom.add(ok);
            f.add(bottom,BorderLayout.SOUTH);
            //创建一个装载了下拉选择框、三个JCheckBox的JPanel
            JPanel checkPanel=new JPanel();
            checkPanel.add(colorChooser);
        	bg.add(male);
        	bg.add(female);
        	checkPanel.add(male);
        	checkPanel.add(female);
        	checkPanel.add(married);
        	//创建一个垂直排列组件的Box,盛装多行文本域JPanel
        	Box topLeft=Box.createVerticalBox();
        	//使用JScrollPane作为普通组件的JViewPort
        	JScrollPane taJsp=new JScrollPane(ta);
        	topLeft.add(taJsp);
        	topLeft.add(checkPanel);
        	//创建一个水平排列组件的Box,盛装topLeft、colorList
        	Box top=Box.createHorizontalBox();
        	top.add(topLeft);
        	top.add(colorList);
        	//将top Box 容器添加到窗口的中间
        	f.add(top);
        	//------------------下面开始组合菜单、并为菜单添加监听器-----------------------------------------
        	//为newItem设置快捷键,设置快捷键时要使用大写字母
        	newItem.setAccelerator(KeyStroke.getKeyStroke('N',InputEvent.CTRL_MASK));
        	
        	newItem.addActionListener(new ActionListener() {
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				ta.append("用户单机了新建菜单按钮
    ");
    			}
    		});
        	 //为file菜单添加菜单项
        	file.add(newItem);
        	file.add(saveItem);
        	file.add(editItem);
        	//为edit菜单添加菜单项
        	edit.add(autoWrap);
        	//使用addSeparator方法添加菜单分割线
        	edit.addSeparator();
        	edit.add(copyItem);
        	edit.add(pasteItem);
        	
        	//为commentItem组件添加提示信息
        	commentItem.setToolTipText("将程序代码注释起来");
        	//为format菜单添加菜单项
        	format.add(commentItem);
        	format.add(cancelItem);
        	//使用添加new JMenuItem('-')的方式添加菜单分割符
        	edit.add(new JMenuItem("-"));
        	//将format菜单组合到edit菜单中,从而形成二级菜单
        	edit.add(format);
        	//将file、edit菜单添加到mb菜单条中
        	mb.add(file);
        	mb.add(edit);
        	//为f窗口设置菜单条
        	f.setJMenuBar(mb);
        	
        	
        	//----------------------下面开始组合右键菜单,并安装右键菜单---------------------------------
        	flavorGroup.add(metaItem);
            flavorGroup.add(widowsItem);
            flavorGroup.add(motifItem);
            pop.add(metaItem);
            pop.add(widowsItem);
            pop.add(motifItem);
            //为三个菜单创建事件监听器
        	ActionListener flavorListener=new ActionListener() {
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				try {
    					if (e.getActionCommand().equals("Metal风格")) {
    						changeFlavor(1);
    
    					} else if (e.getActionCommand().equals("Widows风格")) {
    						changeFlavor(2);
    
    					} else if (e.getActionCommand().equals("Motif风格")) {
                            changeFlavor(3);
    					}
    				} catch (Exception e2) {
    					e2.printStackTrace();
    				}
    			}
    		};
    		
    		//为三个菜单添加事件监听器
    		metaItem.addActionListener(flavorListener);
    		widowsItem.addActionListener(flavorListener);
    		motifItem.addActionListener(flavorListener);
    		//调用该方法即可设置右键菜单,无须使用事件机制
    		ta.setComponentPopupMenu(pop);
    		//设置关闭窗口时,退出程序
    		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        	f.pack();
        	f.setVisible(true);
        	
        }
        
        
        //定义一个方法,用于改变界面风格
        private void changeFlavor(int flavor) throws Exception{
        	switch(flavor){
        	//设置metal风格
        	   case  1:
        		      UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
        		      break;
             //设置widons风格
        	   case 2:
        	          UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
        	          break;
        	   case 3:
        		   UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
        		   break;
        	}
        	//更新f窗口内顶级容器以及内部所有组件的UI
        	SwingUtilities.updateComponentTreeUI(f.getContentPane());
        	//更新mb菜单条以及内部所有组件的UI	
        	SwingUtilities.updateComponentTreeUI(mb);
        	//更新右键pop菜单以及内部所有组件的UI
        	SwingUtilities.updateComponentTreeUI(pop);
        	
        }
          
        
    	public static void main(String[] args) {
    		
    		//设置Swing窗口使用JAVA风格
    		//JFrame.setDefaultLookAndFeelDecorated(true);
    		new SwingComponent().init();
    	}
    	
    
    }
    

  • 相关阅读:
    DP 水题 最长不下降子序列
    数的划分
    水题------纪念品分组
    NY95 众数问题
    NY86 找球号(一)
    C3-Zexal的矩阵链乘
    C3-Zexal的多路流水线调度
    C4-Zexal的食物链
    C4-排列
    C3-炮弹杀伤力
  • 原文地址:https://www.cnblogs.com/wuyida/p/6300348.html
Copyright © 2011-2022 走看看