learning java swing 基本组件用法
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent; public class SwingComponent {
JFrame f = new JFrame("test");
Icon okIcon = new ImageIcon("ico/ok.png"); JButton ok = new JButton("确认", okIcon); JRadioButton male = new JRadioButton("男", true);
JRadioButton female = new JRadioButton("女", false); ButtonGroup bg = new ButtonGroup(); JCheckBox married = new JCheckBox("是否已婚", false); String[] colors = new String[]{"红色","绿色","蓝色"}; JComboBox<String> colorChooser = new JComboBox<>(colors); JList<String> colorList = new JList<>(colors); JTextArea ta = new JTextArea(, ); JTextField name = new JTextField(); JMenuBar mb = new JMenuBar(); JMenu file = new JMenu("文件"); JMenu edit = new JMenu("编辑"); Icon newIcon = new ImageIcon("ico/new.png");
JMenuItem newItem = new JMenuItem("新建", newIcon); Icon saveIcon = new ImageIcon("ico/save.png");
JMenuItem saveItem = new JMenuItem("保存", saveIcon); Icon exitIcon = new ImageIcon("ico/exit.png");
JMenuItem exitItem = new JMenuItem("退出",exitIcon); JCheckBoxMenuItem autoWrap = new JCheckBoxMenuItem("自动换行"); JMenuItem copyItem = new JMenuItem("复制", new ImageIcon("ico/copy.png")); JMenuItem pasteItem = new JMenuItem("粘贴", new ImageIcon("ico/paste.png")); JMenu format = new JMenu("格式"); JMenuItem commentItem = new JMenuItem("注释");
JMenuItem cancelItem = new JMenuItem("取消注释"); JPopupMenu pop = new JPopupMenu(); ButtonGroup flavorGroup = new ButtonGroup(); JRadioButtonMenuItem metalItem = new JRadioButtonMenuItem("Metal风格", true);
JRadioButtonMenuItem nimbusItem = new JRadioButtonMenuItem("Nimbus风格");
JRadioButtonMenuItem windowsItem = new JRadioButtonMenuItem("Windows风格");
JRadioButtonMenuItem classicItem = new JRadioButtonMenuItem("Windows经典风格");
JRadioButtonMenuItem motifItem = new JRadioButtonMenuItem("Motif风格"); public void init(){
var botton = new JPanel();
botton.add(name);
botton.add(ok);
f.add(botton, BorderLayout.SOUTH); var checkPannel = new JPanel();
checkPannel.add(colorChooser);
checkPannel.add(male);
checkPannel.add(female);
checkPannel.add(married);
bg.add(male);
bg.add(female); var topLeft = Box.createVerticalBox();
var taJsp = new JScrollPane(ta);
topLeft.add(taJsp);
topLeft.add(checkPannel); var top = Box.createHorizontalBox(); top.add(topLeft);
top.add(colorList);
f.add(top); newItem.setAccelerator(KeyStroke.getKeyStroke('N', InputEvent.CTRL_DOWN_MASK));
newItem.addActionListener(e -> ta.append("用户单击了 新建 菜单")); file.add(newItem);
file.add(saveItem);
file.add(exitItem); edit.add(autoWrap);
edit.addSeparator();
edit.add(copyItem);
edit.add(pasteItem); commentItem.setToolTipText("将程序代码注释起来"); format.add(commentItem);
format.add(cancelItem); edit.add(new JMenuItem("-"));
edit.add(format); mb.add(file);
mb.add(edit); f.setJMenuBar(mb); flavorGroup.add(metalItem);
flavorGroup.add(nimbusItem);
flavorGroup.add(windowsItem);
flavorGroup.add(classicItem);
flavorGroup.add(motifItem); pop.add(metalItem);
pop.add(nimbusItem);
pop.add(windowsItem);
pop.add(classicItem);
pop.add(motifItem); ActionListener flavorListener = e -> {
try {
switch (e.getActionCommand()){
case "Metal风格":
changeFlavor();
break;
case "Nimbus风格":
changeFlavor();
break;
case "Windows风格":
changeFlavor();
break;
case "Windows经典风格":
changeFlavor();
break;
case "Motif风格":
changeFlavor();
break; }
} catch (IllegalAccessException ex) {
ex.printStackTrace();
} catch (InstantiationException ex) {
ex.printStackTrace();
} catch (UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
}; metalItem.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);
} private void changeFlavor(int flavor) throws ClassNotFoundException, UnsupportedLookAndFeelException, InstantiationException, IllegalAccessException { switch (flavor){
case :
UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
break;
case :
UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
break;
case :
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
break;
case :
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel");
break;
case :
UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
break;
} SwingUtilities.updateComponentTreeUI(f.getContentPane());
SwingUtilities.updateComponentTreeUI(mb);
SwingUtilities.updateComponentTreeUI(pop);
} public static void main(String[] args) {
new SwingComponent().init();
} }
output:
learning java swing 基本组件用法的更多相关文章
- leaning java swing 为组件设置边框
import javax.swing.*; import javax.swing.border.BevelBorder; import javax.swing.border.Border; impor ...
- learning java swing 双缓冲和键盘驱动
import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.In ...
- learning java AWT 常见组件
import javax.swing.*; import java.awt.*; public class CommonComponent { Frame f = new Frame("te ...
- learning java 处理流的用法
有点重定向使用的味道 import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.Pri ...
- Java Swing Graphics Graphics2D的一般用法
Java Swing Graphics Graphics2D的一般用法: 贝塞尔曲线参考:http://www.zhangxinxu.com/wordpress/2014/06/deep-unders ...
- Java核心技术卷一基础知识-第9章-Swing用户界面组件-读书笔记
第9章 Swing用户界面组件 本章内容: * Swing与模型-视图-控制器设计模式 * 布局管理概述 * 文本输入 * 选择组件 * 菜单 * 复杂的布局管理 * 对话框 本章将介绍构造功能更加齐 ...
- java Swing组件和事件处理(二)
1.BoxLayout类可以创建一个布局对象,成为盒式布局,BoxLayout在javax.Swing border 包中,java.swing 包提供一个Box类,该类也是一个类,创建的容器称作一 ...
- Java中日志组件详解
avalon-logkit Java中日志组件详解 lanhy 发布于 2020-9-1 11:35 224浏览 0收藏 作为开发人员,我相信您对日志记录工具并不陌生. Java还具有功能强大且功能强 ...
- Java Swing 第03记 布局管理器
几种Swing常用的布局管理器 BorderLaout 它将容器分为5个部分,即东.南.西.北.中,每一个区域可以容纳一个组件,使用的时候也是通过BorderLayout中5个方位常量来确定组件所在的 ...
随机推荐
- ArcGIS JS 之通过代理配置ArcGIS Server服务 token
ArcGIS JS 代理 1.ArcGIS Server Manager中配置访问服务的用户名.密码.角色等,并配置地图服务的具体角色名称 2.在ArcGIS JS中配置使用代理,下述代码将esri的 ...
- MAC 添加Jmeter环境变量
vim ./bash_profile JMETER_HOME=/Users/finup/apache-jmeter-5.1.1 CLASSPATH=$JAVA_HOME/lib/tools.jar:$ ...
- [LOJ2541] [PKUWC2018] 猎人杀
题目链接 LOJ:https://loj.ac/problem/2541 Solution 很巧妙的思路. 注意到运行的过程中概率的分母在不停的变化,这样会让我们很不好算,我们考虑这样转化:假设所有人 ...
- FastDFS安装指南
FastDFS安装指南 提前准备好的文件资料: 1.FastDFS--tracker安装 1.1 FastDFS安装环境 FastDFS是C语言开发,建议在linux上运行,本教程使用Centos7. ...
- Navicat premium工具转储数据表的结构时,datatime字段报错
Navicat premium工具导出数据库: Navicat premium工具导入数据库: 运行SQL文件,遇到的错误,红色下划线提示,发现:(SQL文件的时间有问题) 不是insert语句有问题 ...
- 图解Apache Mina
Apache MINA 是一个用于简化开发构建高性能.高可扩展的网络应用框架.通过JAVA NIO在各种传输协议(如:TCP/IP.UDP/IP)上提供抽象的事件驱动异步API Apache MINA ...
- Java 之 JDBCTemplate
Spring JDBC Spring 框架是对 JDBC 的简单封装,提供了一个 JDBCTemplate 对象简化 JDBC 的开发. 步骤: 1.导入 jar 包 2.创建 JDBCTemplat ...
- Android查看应用方法数
当一个项目快速迭代时,难免引进各种依赖,从而导致单个apk超过65k的限制.如何查询apk的方法数也是每个Android Developer必备技能. 我使用的是 dex-method-counts ...
- 服务接口,选择rpc还是http?
从通信内容/功能上看 http应用于web环境,rpc应用于分布式调度从功能上看没有太大区别,很多情况下rpc与消息中间件结合通信实现分布式调度 从用法上看两者都是c/s结构,无太大区别 从实现上看类 ...
- MaxScale ERROR 2006 (HY000): MySQL server has gone away
Error: MaxScale cannot be run as root.Failed to write child process message!解决办法:# maxscale -f /etc/ ...