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. Deployed component GUIs and figures have different look and feel than MATLAB desktop

    原文:http://www.mathworks.com/support/bugreports/1293244 Description Deployed GUIs and figures look an ...

  2. Host绑定

    Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Host ...

  3. 【转】tomcat下jndi的三种配置方式

    jndi(Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API.命名服务将名称和对象联系起来,使得我们可以用 ...

  4. Velocity是如何工作的

    当在一个应用程序或者servlet中使用Velocity的时候,你要做如下几个工作: 初始化Velocity.Velocity提供2种使用形式,不管是单一实例模式还是单独运行实例模式,初始化过程都只做 ...

  5. 每天一个linux 命令:which

    我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索:        which  查看可执行文件的位置.       whereis 查看文件的位置.         ...

  6. js学习记录

    1.js语法 2.数据类型(基本类型与对象类型.类型的转换) 2.1 数字 2.2 文本 2.3 布尔值 2.4 null和undefined 2.5 对象 2.6 类型检测 3.操作符和表达式 4. ...

  7. 关于java线程池 Ⅱ

    上一篇翻译了线程池主要部分的api,经过一段时间的学习,这里记录一下这段时间对jdk自带线程池的学习成果. 为了方便说明,先放一张类图,包括了jdk线程池主要涉及到的类,为了条理清晰去掉了部分依赖和关 ...

  8. Android实例-使用自定义字体文件(XE8+小米2)

    结果: 1.需要修改DELPHI自身的FMX.FontGlyphs.Android.pas,复制到程序的根目录下(红色部分为修改过的). 2.字体文件从 C:\Windows\Fonts 直接拷贝到A ...

  9. nyoj 115 城市平乱

    城市平乱 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 南将军统领着N个部队,这N个部队分别驻扎在N个不同的城市. 他在用这N个部队维护着M个城市的治安,这M个城市 ...

  10. 转载总结一些关于Google chart api的知识

    <script type="text/javascript">      google.setOnLoadCallback(drawChartLine);      f ...