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. 第一个Angular2的样例

    欢迎跟我一起学习Angular2 本文根据angular2官网手动敲码得来: 本文地址:http://blog.csdn.net/sushengmiyan 本文作者:苏生米沿 - 开发环境搭建 - 配 ...

  2. Android Studio精彩案例(四)《DrawerLayout使用详解仿网易新闻客户端侧边栏 》

    转载本专栏文章,请注明出处,尊重原创 .文章博客地址:道龙的博客 为了提高兴趣,咱们开头先看看最终要实现什么样的效果: 侧拉菜单在Android应用中非常常见,它的实现方式太多了,今天我们就说说使用G ...

  3. Python 好用得让人发指的函数参数语法糖

    是吗? def f(x,y,z): return x+y+z t=(200,300) print(f(1,2,3)) print(f(1,*t)) 结果: >>> 6 501 这是我 ...

  4. Linux 高性能服务器编程——多线程编程

    问题聚焦:     在简单地介绍线程的基本知识之后,主要讨论三个方面的内容:    1 创建线程和结束线程:    2 读取和设置线程属性:    3 线程同步方式:POSIX信号量,互斥锁和条件变量 ...

  5. Java进阶(四十四)线程与进程的特征及区别

    线程与进程的特征及区别 定义及特征 进程   指在系统中能独立运行并作为资源分配的基本单位,它是由一组机器指令.数据和堆栈等组成的,是一个能独立运行的活动实体. 进程的特征: 1.动态性:进程的实质是 ...

  6. 4.QPixmap,QTransform,绘图函数的使用

     新建一个项目Painter MyWidget.h #ifndef MYWIDGET_H #define MYWIDGET_H #include <QWidget> class MyW ...

  7. ROS(indigo)MoveIt!控制ABB RobotStudio 5.6x 6.0x中机器人运动

    Gazebo以及相关参考文献,参考: ROS(indigo)ABB机器人MoveIt例子 这里需要配置RobotStudio,请参考ROS官网教程.下面列出要点:   window端配置结束后,在Ub ...

  8. Android开发学习之路--RxAndroid之初体验

    学了一段时间android,看了部分的项目代码,然后想想老是学基础也够枯燥乏味的,那么就来学习学习新东西吧,相信很多学java的都听说过RxJava,那么android下也有RxAndroid. Rx ...

  9. 3.QT中的debug相关的函数,以及文件锁的使用

     1  新建项目T33Debug main.cpp #include <QDebug> #include <QFile> #include <QMutex>   ...

  10. Cocos2D中的纹理(textures)的解释

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流 ...