Swing组件 创建窗口应用
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组件 创建窗口应用的更多相关文章
- java Swing组件随着窗口拖动等比移动或等比放大
实现原理很简单, 1清空布局(使用绝对布局) 2添加监听器(监听窗口是否被拖动) 3在监听器里面动态调整 组件的位置 效果如下: 拖动之后效果: 代码实现: import java.awt.Event ...
- Java基础之创建窗口——创建应用程序窗口(TryWindow)
控制台程序. 准备好应用程序窗口及其包含的组件并显示,这称为实现窗口.调用应用程序窗口对象的setVisible()方法就会实现窗口.实现了应用程序的GUI之后,在主线程中修改或查询GUI可能会导致死 ...
- java中经常使用的Swing组件总结
1.按钮(Jbutton) Swing中的按钮是Jbutton,它是javax.swing.AbstracButton类的子类,swing中的按钮可以显示图像,并且可以将按钮设置为窗口的默认图标,而且 ...
- 自学电脑游戏第三天(Swing组件)
Swing组件 1.按钮(Jbutton) 示例:选择用户所喜欢的城市. import java.awt.*; import java.awt.event.*; import javax.swing. ...
- Java-GUI编程之Swing组件
目录 为组件设置边框 使用JToolBar创建工具条 JColorChooser和JFileChooser JColorChooser JFileChooser JOptionPane 基本概述 四种 ...
- Swing组件Jtree,JTablePane选项卡运用
今天开始写技术博客,说实话,本没有什么技术,说是总结也好,说是分享也罢,总之是想自己有意识的做一些事情,作为一名即将毕业的大学生,总是想以最好的状态,去面向社会,今天就是我准备好了的时候,本人将技术博 ...
- e559. 创建窗口
A frame is a component container that displays its contents in a top-level window with a title bar a ...
- Swing组件都采用MVC设计模式
Swing组件都采用MVC(Model-View-Controller,既模型-视图-控制器)设计模式,从而可以实现GUI组件的显示逻辑和数据逻辑的分离,允许程序员自定义Render来改变GUI组件的 ...
- SQL Server COM 组件创建实例失败
SQL Server COM 组件创建实例失败 SQL2008数据库总会出现从 IClassFactory 为 CLSID 为 {17BCA6E8-A95D-497E-B2F9-AF6AA4759 ...
随机推荐
- iOS 中捕获截屏操作
转自:iOS知识小集 在iOS 7后,苹果提供了UIApplicationUserDidTakeScreenshotNotification通知来告诉App用户做了截屏操作.苹果的描述如下: // T ...
- Mac上如何完美的转换epub至mobi供kindle观看
网上有很多书籍资源的格式都是epub(我们不谈及pdf格式了,你懂得-),epub格式是无法直接在kindle上观赏的,除非你越狱kinde后,安装扩展插件 我们可以将epub转换为mobi格式,网上 ...
- Swift中不用桥接文件和.h头文件直接和C代码交互的方法
我们知道一般情况下Swit要想调用obj-c,c或c++代码必须通过obj-c以及桥接文件才可以办到,但是对于某些简单的代码,我们可以跳过桥接文件和.h头文件,直接和C代码交互呢! 我们再Projec ...
- ROS_Kinetic_x 目前已更新的常用機器人資料 rosbridge agvs pioneer_teleop nao TurtleBot
Running Rosbridge Description: This tutorial shows you how to launch a rosbridge server and talk to ...
- 19 Handler 子线程向主线程发送信息
案例一 Message创建三种方法: package com.example.day19_handler_demo1; import android.os.Bundle; import android ...
- Nginx的负载均衡 - 保持会话 (ip_hash)
Nginx版本:1.9.1 我的博客:http://blog.csdn.net/zhangskd 算法介绍 ip_hash算法的原理很简单,根据请求所属的客户端IP计算得到一个数值,然后把请求发往该数 ...
- 开源IMDG之GridGain
作为另一款主流的开源数据网格产品,GridGain是Hazelcast的强有力竞争者.同样提供了社区版和商业版,近日GridGain的开源版本已经进入Apache孵化器项目Ignite(一款开源的内存 ...
- JAVA之旅(三十四)——自定义服务端,URLConnection,正则表达式特点,匹配,切割,替换,获取,网页爬虫
JAVA之旅(三十四)--自定义服务端,URLConnection,正则表达式特点,匹配,切割,替换,获取,网页爬虫 我们接着来说网络编程,TCP 一.自定义服务端 我们直接写一个服务端,让本机去连接 ...
- GCD API 记录 (三)
本篇就不废话啦,接着上篇记录我见过或者使用过的与GCD相关的API.由于一些API使用的非常少,用过之后难免会忘记,还是记录一下比较好. 6.dispatch_group_wait 该API依然是与d ...
- Unity插件 - MeshEditor(六) 变形动画状态机
变形动画状态机--MeshAnimator,是针对MeshAnimation的状态管理器,有大量类似Unity animator的功能,但MeshAnimator操作会更加简便,更加直观,居家旅(zh ...