package com.swing;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent; import javax.swing.*; public class SwingComponent { JFrame f=new JFrame("测试");
//定义一个按钮,并为之指定图标
Icon okIcon=new ImageIcon("icon/angry.gif");
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 colorChooser=new JComboBox(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("icon/ball.gif");
JMenuItem newItem=new JMenuItem("新建",newIcon);
//创建保存菜单项,并为之指定图标
Icon saveIcon=new ImageIcon("icon/bag.gif");
JMenuItem saveItem=new JMenuItem("保存",saveIcon);
//退出菜单项
Icon editIcon=new ImageIcon("icon/ball1.gif");
JMenuItem editItem=new JMenuItem("退出",editIcon); JCheckBoxMenuItem autoWrap=new JCheckBoxMenuItem("自动换行");
//创建“复制”菜单项,并为之指定图标
JMenuItem copyItem=new JMenuItem("复制",new ImageIcon("icon/book.png"));
//创建粘贴菜单项
JMenuItem pasteItem =new JMenuItem("粘贴",new ImageIcon("icon/paste.png")); JMenu format=new JMenu("格式");
JMenuItem commentItem=new JMenuItem("注释");
JMenuItem cancelItem=new JMenuItem("取消注释"); //定义一个右键菜单用于设置程序风格
JPopupMenu pop=new JPopupMenu();
//用于组合三个风格菜单项的ButtonGroup
ButtonGroup flavorGroup=new ButtonGroup();
//创建三个单选框按钮,用于设置程序的外观风格
JRadioButtonMenuItem metaItem=new JRadioButtonMenuItem("Metal风格",true);
JRadioButtonMenuItem widowsItem=new JRadioButtonMenuItem("Widows风格");
JRadioButtonMenuItem motifItem=new JRadioButtonMenuItem("Motif风格"); //--------------------------用于执行界面初始化的Init方法------------------------------------------- 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(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
ta.append("用户单机了新建菜单按钮\n");
}
});
//为file菜单添加菜单项
file.add(newItem);
file.add(saveItem);
file.add(editItem);
//为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(metaItem);
flavorGroup.add(widowsItem);
flavorGroup.add(motifItem);
pop.add(metaItem);
pop.add(widowsItem);
pop.add(motifItem);
//为三个菜单创建事件监听器
ActionListener flavorListener=new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
if (e.getActionCommand().equals("Metal风格")) {
changeFlavor(1); } else if (e.getActionCommand().equals("Widows风格")) {
changeFlavor(2); } else if (e.getActionCommand().equals("Motif风格")) {
changeFlavor(3);
}
} catch (Exception e2) {
e2.printStackTrace();
}
}
}; //为三个菜单添加事件监听器
metaItem.addActionListener(flavorListener);
widowsItem.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;
//设置widons风格
case 2:
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
break;
case 3:
UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
break;
}
//更新f窗口内顶级容器以及内部所有组件的UI
SwingUtilities.updateComponentTreeUI(f.getContentPane());
//更新mb菜单条以及内部所有组件的UI
SwingUtilities.updateComponentTreeUI(mb);
//更新右键pop菜单以及内部所有组件的UI
SwingUtilities.updateComponentTreeUI(pop); } public static void main(String[] args) { //设置Swing窗口使用JAVA风格
//JFrame.setDefaultLookAndFeelDecorated(true);
new SwingComponent().init();
} }

Swing组件 创建窗口应用的更多相关文章

  1. java Swing组件随着窗口拖动等比移动或等比放大

    实现原理很简单, 1清空布局(使用绝对布局) 2添加监听器(监听窗口是否被拖动) 3在监听器里面动态调整 组件的位置 效果如下: 拖动之后效果: 代码实现: import java.awt.Event ...

  2. Java基础之创建窗口——创建应用程序窗口(TryWindow)

    控制台程序. 准备好应用程序窗口及其包含的组件并显示,这称为实现窗口.调用应用程序窗口对象的setVisible()方法就会实现窗口.实现了应用程序的GUI之后,在主线程中修改或查询GUI可能会导致死 ...

  3. java中经常使用的Swing组件总结

    1.按钮(Jbutton) Swing中的按钮是Jbutton,它是javax.swing.AbstracButton类的子类,swing中的按钮可以显示图像,并且可以将按钮设置为窗口的默认图标,而且 ...

  4. 自学电脑游戏第三天(Swing组件)

    Swing组件 1.按钮(Jbutton) 示例:选择用户所喜欢的城市. import java.awt.*; import java.awt.event.*; import javax.swing. ...

  5. Java-GUI编程之Swing组件

    目录 为组件设置边框 使用JToolBar创建工具条 JColorChooser和JFileChooser JColorChooser JFileChooser JOptionPane 基本概述 四种 ...

  6. Swing组件Jtree,JTablePane选项卡运用

    今天开始写技术博客,说实话,本没有什么技术,说是总结也好,说是分享也罢,总之是想自己有意识的做一些事情,作为一名即将毕业的大学生,总是想以最好的状态,去面向社会,今天就是我准备好了的时候,本人将技术博 ...

  7. e559. 创建窗口

    A frame is a component container that displays its contents in a top-level window with a title bar a ...

  8. Swing组件都采用MVC设计模式

    Swing组件都采用MVC(Model-View-Controller,既模型-视图-控制器)设计模式,从而可以实现GUI组件的显示逻辑和数据逻辑的分离,允许程序员自定义Render来改变GUI组件的 ...

  9. SQL Server COM 组件创建实例失败

    SQL Server COM 组件创建实例失败   SQL2008数据库总会出现从 IClassFactory 为 CLSID 为 {17BCA6E8-A95D-497E-B2F9-AF6AA4759 ...

随机推荐

  1. 短文本分析----基于python的TF-IDF特征词标签自动化提取

    绪论 最近做课题,需要分析短文本的标签,在短时间内学习了自然语言处理,社会标签推荐等非常时髦的技术.我们的需求非常类似于从大量短文本中获取关键词(融合社会标签和时间属性)进行用户画像.这一切的基础就是 ...

  2. 浅谈机器人控制与仿真设计----RDS和ROS

    机器人控制.仿真或实验,主要由三个部分组成,机器人.环境和算法. 当然各部分又包含很多子部分和功能,这里主要以仿真为主,为了使得仿真结果能够直接应用到实际机器人上,这里分别以RDS和ROS对比介绍.h ...

  3. Gazebo機器人仿真學習探索筆記(七)连接ROS

    中文稍后补充,先上官方原版教程.ROS Kinetic 搭配 Gazebo 7 附件----官方教程 Tutorial: ROS integration overview As of Gazebo 1 ...

  4. static修饰符详解

    static表示"全局"或者"静态"的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被static ...

  5. Git运用基础之如何删除Github上不想要的项目

    今天突然想删除,(强迫症想删除)之前练习时多创建的多个Github上的源代码或者无用Demo地址,然后看了一些文章都比较老式,这里我展示一下最新的删除步骤. 一.首先登录自己的Github账户主页(没 ...

  6. Microsoft Dynamics CRM 2011 当您在 大型数据集上执行 RetrieveMultiple 查询很慢的解决方法

    症状 当您在 Microsoft Dynamics CRM 2011 年大型数据集上执行 RetrieveMultiple 查询时,您会比较慢. 原因 发生此问题是因为大型数据集缓存 Retrieve ...

  7. numpy教程:排序、搜索和计数

    http://blog.csdn.net/pipisorry/article/details/51822775 numpy排序.搜索和计数函数和方法.(重新整合过的) ],, , ], [, , ]] ...

  8. 带你深入理解STL之List容器

    上一篇博客中介绍的vector和数组类似,它拥有一段连续的内存空间,并且起始地址不变,很好的支持了随机存取,但由于是连续空间,所以在中间进行插入.删除等操作时都造成了内存块的拷贝和移动,另外在内存空间 ...

  9. iOS10软件崩溃 Xcode8崩溃 打印/字体等问题汇总 韩俊强的博客

    每日更新关注:http://weibo.com/hanjunqiang  新浪微博!iOS开发者交流QQ群: 446310206 [1].Xcode8代码出现ubsystem: com.apple.U ...

  10. android自定义View-继承

    介绍anroid通过继承系统的控件自定义view 方法是通过对OnDraw()方法进行复写来实现的 举例继承TextView 在textView的背景加上矩形的效果 代码实现 testView的代码 ...