package ming;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent; import javax.swing.*; public class TestFrame { JFrame f = new JFrame("testing"); // 定义一个按钮,并为它设置图标
Icon okIcon = new ImageIcon("/Icon/anydo.png"); JButton bnt_ok = new JButton("yes", okIcon); // 定义一个单选按钮
JRadioButton male = new JRadioButton("male"); JRadioButton female = new JRadioButton("female"); // 将单选按钮组合一起
ButtonGroup bg = new ButtonGroup(); // 定义复选按钮框
JCheckBox married = new JCheckBox("have been married?", false); String[] colors = new String[] { "Red", "Green", "Blue" }; // 定义一个下拉选择框
JComboBox<String> colorChooser = new JComboBox<String>(colors); // 定义一个列表选择框
JList<String> colorList = new JList<String>(colors); // 定义一个8行 20列 多行文本域
JTextArea ta = new JTextArea(8, 20); // 定义一个40列的文本域
JTextField name = new JTextField(40); JMenuBar mb = new JMenuBar();
JMenu file = new JMenu("file");
JMenu edit = new JMenu("edit"); // 创建“新建” 菜单项
Icon newIcon = new ImageIcon("/Icon/soundhound.png");
JMenuItem newItem = new JMenuItem("NEW", newIcon); // 创建保存 菜单项
Icon saveIcon = new ImageIcon("/Icon/messenger.png");
JMenuItem saveItem = new JMenuItem("SAVE", saveIcon); // 创建退出菜单项
Icon exitIcon = new ImageIcon("/Icon/contact.png");
JMenuItem exitItem = new JMenuItem("EXIT", exitIcon); // 创建自动换行
JCheckBoxMenuItem autoWrap = new JCheckBoxMenuItem("auto wrap"); // 创建复制 菜单项
JMenuItem copyItem = new JMenuItem("COPY", new ImageIcon(
"/Icon/playstore.png"));
// 创建黏贴 菜单项
JMenuItem pasteItem = new JMenuItem("COPY", new ImageIcon(
"/Icon/playstore.png")); JMenu format = new JMenu("format"); JMenuItem commentItem = new JMenuItem("COMMENT", new ImageIcon(
"/Icon/playstore.png"));
JMenuItem cancelItem = new JMenuItem("CANCEL COMMENT", new ImageIcon(
"/Icon/playstore.png")); // 定义一个右键菜单,设置程序风格
JPopupMenu pop = new JPopupMenu();
ButtonGroup flavorGroup = new ButtonGroup();
// 5个单选框用于设置风格
JRadioButtonMenuItem metailItem = new JRadioButtonMenuItem("metail", true);
JRadioButtonMenuItem nimbusItem = new JRadioButtonMenuItem("nimbus");
JRadioButtonMenuItem windowsItem = new JRadioButtonMenuItem("windows");
JRadioButtonMenuItem classicItem = new JRadioButtonMenuItem("classic");
JRadioButtonMenuItem motifItem = new JRadioButtonMenuItem("motif"); public void init() {
// 创建装载文本框的Panel
JPanel buttom = new JPanel();
buttom.add(name);
buttom.add(bnt_ok);
f.add(buttom, BorderLayout.NORTH);
// 装载下拉选择框,3个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();
// 使用JScrollPan 作为普通组建的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加载到窗口中间
f.add(top); //组合菜单,并添加监听器
//newItem设置快捷键事要用大写字母
newItem.setAccelerator(KeyStroke.getKeyStroke('N',InputEvent.CTRL_MASK));
newItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
ta.append("user clicked new item\n");
} });
//为file菜单添加菜单项
file.add(newItem);
file.add(saveItem);
file.add(exitItem);
//为edit菜单添加菜单项
edit.add(autoWrap);
//添加分割线
edit.addSeparator();
edit.add(copyItem);
edit.add(pasteItem); //为commentIteam添加提示信息
commentItem.setToolTipText("comment the code");
//为format添加菜单项目
format.add(commentItem);
format.add(cancelItem); //使用 new JMenuItem("-") 不能添加菜单分隔符
edit.add(new JMenuItem("-"));
//format添加到edit,形成二级菜单
edit.add(format);
//add file,edit item to Menu
mb.add(file);
mb.add(edit);
//为f设置菜单条
f.setJMenuBar(mb);
//右键组合菜单,并安装右键菜单
flavorGroup.add(metailItem);
flavorGroup.add(nimbusItem);
flavorGroup.add(windowsItem);
flavorGroup.add(classicItem);
flavorGroup.add(motifItem);
pop.add(metailItem);
pop.add(nimbusItem);
pop.add(windowsItem);
pop.add(classicItem);
pop.add(motifItem);
ActionListener flavorListener = new ActionListener(){ @Override
public void actionPerformed(ActionEvent e) {
try{
switch(e.getActionCommand()){
case "metail":
changeFlavor(1);
break;
case "nimbusItem":
changeFlavor(2);
break;
case "windows":
changeFlavor(3);
break;
case "classic":
changeFlavor(4);
break;
case "motifItem":
changeFlavor(5);
break; }
}catch(Exception ee){
ee.printStackTrace();
}
} private void changeFlavor(int i) { } }; //设置5个风格的监控事件
metailItem.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); } public static void main(String[] args) {
// TODO Auto-generated method stub
//默认风格
JFrame.setDefaultLookAndFeelDecorated(true); new TestFrame().init();
} }

Java_swing控件实例的更多相关文章

  1. 计数器控件实例 NumericStepper

    计数器控件实例 书:158 <?xml version="1.0" encoding="utf-8"?> <s:Application xml ...

  2. 树结构控件实例 TreeControl

    树结构控件实例 书:157 <?xml version="1.0" encoding="utf-8"?> <s:Application xml ...

  3. 下拉列表控件实例 ComboBoxControl

    下拉列表控件实例 书:151页 <?xml version="1.0" encoding="utf-8"?> <s:Application x ...

  4. wpf datagrid 如何自定义行的控件实例,(textbox 并选中则全选)

    主要是为了用户输入方便 按回车,选中下一列,text自动获取焦点,输入状态 获取控件实例  https://blog.csdn.net/m15188153014/article/details/486 ...

  5. .NET组件控件实例编程系列——5.DataGridView数值列和日期列

    在使用DataGridView编辑数据的时候,编辑的单元格一般会显示为文本框,逻辑值和图片会自动显示对应类型的列.当然我们自己可以手工选择列的类型,例如ComboBox列.Button列.Link列. ...

  6. Appium依据xpath获取控件实例随笔

    如文章<Appium基于安卓的各种FindElement的控件定位方法实践>所述,Appium拥有众多获取控件的方法.当中一种就是依据控件所在页面的XPATH来定位控件. 本文就是尝试通过 ...

  7. 【转】Appium根据xpath获取控件实例随笔

    原文地址:http://blog.csdn.net/zhubaitian/article/details/39754233 如文章<Appium基于安卓的各种FindElement的控件定位方法 ...

  8. Appium根据xpath获取控件实例随笔

    如文章<Appium基于安卓的各种FindElement的控件定位方法实践>所述,Appium拥有众多获取控件的方法.其中一种就是根据控件所在页面的XPATH来定位控件. 本文就是尝试通过 ...

  9. webform FileUpload控件实例应用 上传图片

    首先在根目录下建一个"images"文件: HTML: <form id="form1" runat="server"> < ...

随机推荐

  1. 你真的精通Java吗?

    简历和自我介绍上经常能够读到“精通Java”这样的话,有人和我说,精通Java的人太多了,精通Java已经不能算亮点.不能给自己加分了.可是事实真是这样吗? 对于语言的学习,我有一种观点,一是纵向,即 ...

  2. c#保存datagridview中的数据时报错 “动态SQL生成失败。找不到关键信息”

    ilovejinglei 原文 C#中保存datagridview中的数据时报错"动态SQL生成失败.找不到关键信息" 问题描述     相关代码 using System; us ...

  3. 《深入Java虚拟机学习笔记》- 第17章 异常

    <深入Java虚拟机学习笔记>- 第17章 异常

  4. Selenium 使用方法小结

      基本介绍: Selenium工具专门为WEB应用程序编写的一个验收测试工具. Selenium的核心:browser bot,是用JAVASCRIPT编写的. Selenium工具有4种:Sele ...

  5. 标准的TCP/IP工业以太网-EtherNet/IP

    标准的TCP/IP工业以太网-EtherNet/IP                            徐智穹以太网具有传输速度高.兼容性好.应用广泛等方面的优势,支持几乎所有流行的网络协议,其中 ...

  6. rt-thread博客分享

    对于理解rtos, 国内有一个rt-thread的开源社区,里面讲解了一些rtos的很多概念,方便了理解很多问题点,博客地址如下: http://www.cnblogs.com/King-Gentle ...

  7. jsonp实现跨域请求

    在js中,我们直接用XMLHttpRequest请求不同域上的数据时,是不可以的.但是,在页面上引入不同域上的js脚本文件却是可以的,jsonp正是利用这个特性来实现的. $.ajax({ async ...

  8. jsp?echo

  9. 优步(UBER)发布2016年春节出境游出行报告

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  10. android开发中遇到的问题

    7.ExpandableListView setOnChildClickListener无效,请在adapter的方法isChildSelectable返回true即可 6.使用<shape/& ...