import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;//import java.awt.List;
/*** Description:* <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a> * <br/>Copyright (C), 2001-2012, Yeeku.H.Lee* <br/>This program is protected by copyright laws.* <br/>Program Name:* <br/>Date:* @author Yeeku.H.Lee kongyeeku@163.com* @version 1.0*/
public class Swing1
{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);JComboBox colorChooser = new JComboBox(colors);// 定义一个列表选择框
//  JList<String> colorList = new JList<>(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("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();// 用于组合三个风格菜单项的ButtonGroupButtonGroup flavorGroup = new ButtonGroup();// 创建五个单选框按钮,用于设定程序的外观风格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风格");// -----------------用于执行界面初始化的init方法---------------------public void init(){// 创建一个装载了文本框、按钮的JPanelJPanel bottom = new JPanel();bottom.add(name);bottom.add(ok);f.add(bottom , BorderLayout.SOUTH);// 创建一个装载了下拉选择框、三个JCheckBox的JPanelJPanel checkPanel = new JPanel();checkPanel.add(colorChooser);bg.add(male);bg.add(female);checkPanel.add(male);checkPanel.add(female);checkPanel.add(married);// 创建一个垂直排列组件的Box,盛装多行文本域JPanelBox topLeft = Box.createVerticalBox();// 使用JScrollPane作为普通组件的JViewPortJScrollPane taJsp = new JScrollPane(ta);     //⑤topLeft.add(taJsp);topLeft.add(checkPanel);// 创建一个水平排列组件的Box,盛装topLeft、colorListBox 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(){public void actionPerformed(ActionEvent 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 = new ActionListener(){public void actionPerformed(ActionEvent e){try{if(e.getActionCommand().equals("Metal风格")){ changeFlavor(1);}if(e.getActionCommand().equals("Nimbus风格")){ changeFlavor(2);}if(e.getActionCommand().equals("Windows风格")){ changeFlavor(3);}if(e.getActionCommand().equals("Windows经典风格")){ changeFlavor(4);}if(e.getActionCommand().equals("Motif风格")){ changeFlavor(5);}}catch (Exception ee){ee.printStackTrace();}}};// 为五个风格菜单项添加事件监听器metalItem.addActionListener(flavorListener);nimbusItem.addActionListener(flavorListener);windowsItem.addActionListener(flavorListener);classicItem.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;// 设置Nimbus风格case 2:UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");break;// 设置Windows风格case 3:UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");break;// 设置Windows经典风格case 4:UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel");break;// 设置Motif风格case 5:UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");break;}// 更新f窗口内顶级容器以及内部所有组件的UISwingUtilities.updateComponentTreeUI(f.getContentPane());  //②// 更新mb菜单条以及内部所有组件的UISwingUtilities.updateComponentTreeUI(mb);// 更新pop右键菜单以及内部所有组件的UISwingUtilities.updateComponentTreeUI(pop);}public static void main(String[] args) {// 设置Swing窗口使用Java风格//JFrame.setDefaultLookAndFeelDecorated(true);   //③new Swing1().init();}
}

Swing 各种组件组合大全相关推荐

  1. Java学习day078 Swing用户界面组件(四:选择组件)(复选框、单选钮、边框、组合框、滑动条)

    使用的教材是java核心技术卷1,我将跟着这本书的章节同时配合视频资源来进行学习基础java知识. day078   Swing用户界面组件(四:选择组件)(复选框.单选钮.边框.组合框.滑动条) 前 ...

  2. Java案例:Swing常用组件演示

    文章目录 一.Swing (一)Swing概述 (二)Swing与AWT的关系 (三)Swing组件继承关系图 二.Swing常用组件演示 (一)运行效果 (二)涉及知识点 (三)实现步骤 1.创建J ...

  3. Vue常用的组件库大全【前端工程师必备】【实时更新】【移动端、PC端(web端)、数据可视化组件库(数据大屏) 、动画组件库、3D组件库】

    Vue常用的组件库大全[前端工程师必备] (一)移动端 常用组件库 1)Vant ui 2)Cube UI 3)VUX 4) NuTUI 5)Mint ui 6)Varlet UI 7)OnsenUI ...

  4. 基于Java Swing JFream 组件的趣味推箱子小游戏

    一 需求分析 设计一个经典的推箱子小游戏,在窗体里有墙,箱子,胜利的标志,和工人,用户可以通过键盘上的"上"."下"."左"."右 ...

  5. [源码和文档分享]基于Java Swing JFream 组件的趣味推箱子小游戏

    一 需求分析 设计一个经典的推箱子小游戏,在窗体里有墙,箱子,胜利的标志,和工人,用户可以通过键盘上的"上"."下"."左"."右 ...

  6. 使用Nacos实现服务注册与发现(spring cloud 组件教程大全四)

    使用Nacos实现服务注册与发现(spring cloud 组件教程大全四) idea 创建maven父子工程(spring cloud 组件教程大全 一) windows下nacos的安装及Mysq ...

  7. Python组件库大全

    Github-项目名:awesome-python-cn 请点击下面的连接查看,共维共享! Python组件库大全

  8. java 浏览器 组件_最好的Java / Swing浏览器组件?

    什么是最好的跨平台Java Swing浏览器组件,至少能够在Swing界面中很好地播放(轻型组件?),并且能够在MacOSX和Windows上运行? 诸如:FlyingSaucer,JDIC或其他? ...

  9. Java Swing高级组件——表格组件

    Swing 表格组件 表格是最常用的数据统计形式之一,在日常生活中经常需要表格来统计数据.在 Java Swing 中由JTable类实现表格. 一,创建表格 在 JTable 类中除了默认的构造方法 ...

最新文章

  1. 2021年春季学期-信号与系统-第八次作业参考答案-第十二小题
  2. nslookup默认服务器修改,Nslookup命令的使用 - [详细]
  3. 使用snmp4j实现Snmp功能(二)
  4. EOJ Monthly 2019.2 (based on February Selection) D.进制转换
  5. 解决vue单页路由跳转后scrollTop的问题
  6. HDU - 6558/概率dp(从后往前推导)
  7. 将Java 8支持添加到Eclipse Kepler
  8. mysqlbinlog工具_带你解析MySQL binlog
  9. mysql配置两个猪数据库_Linux下安装启动多个Mysql
  10. 电脑重启bootmgr_解决电脑开机出现bootmgr is compressed的两大妙招
  11. 施耐德电气的 Modicon PLC 中被曝严重漏洞,已有缓解措施
  12. Python 按行读取文本文件 缓存 和 非缓存实现
  13. vue项目中vue-router的使用
  14. python读取tsv文件_Python 读写 tsv
  15. 个人汇总笔记——NUnit
  16. 字节跳动二号人物——山西人张利东
  17. 研发效能度量的正确姿势与落地实践(演讲PPT分享版)
  18. STC8H1K08 - INT4 - 下降沿触发外部中断 4
  19. 【钉钉直播回放下载最全教程,亲测可用!!!】
  20. Python去除空格

热门文章

  1. Apache(阿帕奇)基本操作
  2. 总结word2vec
  3. HS项目自助部署教程0208
  4. C语言 strcpy_s 函数 - C语言零基础入门教程
  5. 科技企业捐赠武汉最新最全排名(截止2月1日)
  6. Unity--时间和帧率
  7. linux下pdf中文显示,PDF中文显示
  8. 软光栅个人项目介绍,编写思路及后期整理
  9. 3D建模可以做什么工作呢
  10. 3D建模师要学什么专业?