AWT组件的Swing实现
2016-11-27 17:12
288 查看
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(); } }
相关文章推荐
- 重量级(awt)和轻量级(swing)组件的repaint()
- 关于awt/swing组件中paint, update, paintComponent, repaint的经验
- 如何混排Swing和AWT组件
- java awt组件vs swing组件
- Java Jtree渲染叶子实现可以添加swing组件
- swing组件和awt组件混用带来的问题
- java.swing和Java.awt实现学生信息管理系统
- Swing技术----------组件重定位(完美实现)
- 使用AWT组件实现验证码功能
- Swing组件的基类JComponent实现滚动到可视区域和JTREE展开(不展开子节点)
- Swing中用GridBagConstraints和GridBagLayout实现组件重叠的效果
- AWT与Swing的实现原理差别
- Swing 实现简单的自定义不规则按钮组件2
- 消除闪屏的双缓冲技术在AWT和Swing中的实现
- 分层Pane结构与Swing组件高级特性的实现
- 关于awt/swing组件中paint, update, paintComponent, repaint的经验
- Swing 实现简单的自定义不规则按钮组件
- 分层Pane结构与Swing组件高级特性的实现
- Java源码-简单计算器界面的AWT实现与Swing实现之比较
- 学习AWT/Swing编程(一)解决Eclipse运行AWT/Swing项目和组件时中文乱码