AWT组件的Swing实现

import java.awt.BorderLayout;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;

import javax.swing.Box;
import javax.swing.ButtonGroup;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JRadioButton;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.KeyStroke;

public class SwingComponent {
    JFrame f=new JFrame("测试");
    //定义一个按钮,并为之指定图标
    Icon okIcon=new ImageIcon("ico/ok.png");
    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<String> colorChooser=new JComboBox<>(colors);
    //定义一个列表选择框
    JList<String> 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("ico/new.png");
    JMenuItem  newItem=new JMenuItem("新建",newIcon);
    //创建“保存"菜单项,并为之指定图标
    Icon saveIcon=new ImageIcon("ico/save.png");
    JMenuItem saveItem=new JMenuItem("保存",saveIcon);
    //创建"退出"菜单项,并为之指定图标
    Icon exitIcon=new ImageIcon("ico/exit.png");
    JMenuItem exitItem=new JMenuItem("退出",exitIcon);
    JCheckBoxMenuItem autoWrap=new JCheckBoxMenuItem("自动换行");
    //创建“复制"菜单项,并为之指定图标
    JMenuItem copyItem=new JMenuItem("复制",new ImageIcon("ico/copy.png"));
    //创建"粘贴"菜单项,并为之指定图标
    JMenuItem pasteItem=new JMenuItem("粘贴",new ImageIcon("ico/paste.png"));
    JMenu format=new JMenu("格式");
    JMenuItem commentItem=new JMenuItem("注释");
    JMenuItem cancelItem=new JMenuItem("取消注释");
    //定义一个右键菜单用于设置程序风格
    JPopupMenu pop=new JPopupMenu();
    //用于组合3个风格菜单项的ButtonGroup
    ButtonGroup flavorGroup=new ButtonGroup();
    //创建5个单选按钮,用于设定程序的外观风格
    JRadioButtonMenuItem metalItem=new JRadioButtonMenuItem("Metal风格",true);
    JRadioButtonMenuItem nimbusItem=new JRadioButtonMenuItem("Nimbus风格");
    JRadioButtonMenuItem windowsItem=new JRadioButtonMenuItem("Windows风格");
    JRadioButtonMenuItem classicItem=new JRadioButtonMenuItem("Windows经典风格");
    JRadioButtonMenuItem motifItem=new JRadioButtonMenuItem("Motif风格");
    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(e -> ta.append("用户单击了”新建“菜单\n"));*/
        //为file菜单添加菜单项
        file.add(newItem);
        file.add(saveItem);
        file.add(exitItem);
        //为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(metalItem);
        flavorGroup.add(nimbusItem);
        flavorGroup.add(windowsItem);
        flavorGroup.add(classicItem);
        flavorGroup.add(motifItem);
        pop.add(metalItem);
        pop.add(nimbusItem);
        pop.add(windowsItem);
        pop.add(classicItem);
        pop.add(motifItem);


        //为5个风格菜单创建事件监听器
        /*ActionListener flavorListener= e -> {
            try{

            }catch(Exception ee){
                ee.printStackTrace();
            }
        }*/
        ta.setComponentPopupMenu(pop);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.pack();
        f.setVisible(true);
    }
    public static void main(String [] args){
        //设置Swing窗口使用Java风格
        //JFrame.setDefaultLookAndFeelDecorated(true);
        new SwingComponent().init();
    } 
}

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值