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 基本组件用法的更多相关文章

  1. leaning java swing 为组件设置边框

    import javax.swing.*; import javax.swing.border.BevelBorder; import javax.swing.border.Border; impor ...

  2. learning java swing 双缓冲和键盘驱动

    import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.In ...

  3. learning java AWT 常见组件

    import javax.swing.*; import java.awt.*; public class CommonComponent { Frame f = new Frame("te ...

  4. learning java 处理流的用法

    有点重定向使用的味道 import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.Pri ...

  5. Java Swing Graphics Graphics2D的一般用法

    Java Swing Graphics Graphics2D的一般用法: 贝塞尔曲线参考:http://www.zhangxinxu.com/wordpress/2014/06/deep-unders ...

  6. Java核心技术卷一基础知识-第9章-Swing用户界面组件-读书笔记

    第9章 Swing用户界面组件 本章内容: * Swing与模型-视图-控制器设计模式 * 布局管理概述 * 文本输入 * 选择组件 * 菜单 * 复杂的布局管理 * 对话框 本章将介绍构造功能更加齐 ...

  7. java Swing组件和事件处理(二)

    1.BoxLayout类可以创建一个布局对象,成为盒式布局,BoxLayout在javax.Swing  border 包中,java.swing 包提供一个Box类,该类也是一个类,创建的容器称作一 ...

  8. Java中日志组件详解

    avalon-logkit Java中日志组件详解 lanhy 发布于 2020-9-1 11:35 224浏览 0收藏 作为开发人员,我相信您对日志记录工具并不陌生. Java还具有功能强大且功能强 ...

  9. Java Swing 第03记 布局管理器

    几种Swing常用的布局管理器 BorderLaout 它将容器分为5个部分,即东.南.西.北.中,每一个区域可以容纳一个组件,使用的时候也是通过BorderLayout中5个方位常量来确定组件所在的 ...

随机推荐

  1. 有关kali更新源时出现的GPG数字证书无效提示的解决方法

    下载并导入key文件 wget -O - https://archive.kali.org/archive-key.asc |apt-key add 显示ok表示成功导入key,然后再进行之后的其他步 ...

  2. VisualStudio 连接 MySql 实现增删查改

    首先创建数据库,建立一个用户登录表 2.visualStudio默认是不支持MySql的,要想通过Ado.Net 操作MySql 需要在管理NeGet包添加对MySql.Data  和 MySql.D ...

  3. java之初识hibernate

    1. 使用jdbc进行数据库操作:获取数据库连接,编写sql语句,执行sql操作,关闭连接. 比如:每次创建连接,释放资源----使的执行效率降低: 解决方案:连接池. 编写sql语句动作----简单 ...

  4. K8S conul部署

    官网有Helm方式的安装文档(https://www.consul.io/docs/platform/k8s/index.html) 一,准备工作: 1,k8s环境 2,nfs服务器 二,创建PV n ...

  5. elasticsearch授权访问

    1.search guard插件 https://www.cnblogs.com/shifu204/p/6376683.html 2.Elasticsearch-http-basic 不支持es5,忽 ...

  6. 心知天气数据API 产品的高并发实践

    心知天气数据API 产品的高并发实践 心知天气作为国内领先的商业气象服务提供商,天气数据API 产品从公司创立以来就一直扮演着很重要的角色.2009 年API 产品初次上线,历经十年,我们不断用心迭代 ...

  7. java容易混淆的概念

    容易混淆的内容 1.JVM内存模型 2.Java内存模型 3.Java对象模型 JVM内存模型 1.堆 2.虚拟机栈 3.本地方法栈 4.程序计数器 5.方法区 Java内存模型 Java堆和方法区的 ...

  8. Ubuntu linux安装完成后隐藏linux磁盘挂载点

    方案1 打开注册表 , 找到这个位置: 计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explore ...

  9. Vue项目中遇到的问题汇总

    一.打包后的打开index.html页面空白的几种情况: 引入的css.js路径报错,此时解决方法:把vue.config.js中的增加publicPath: ‘./’ 或者把原来的baseUrl改为 ...

  10. 信号的有效值(RMS)估计

    % Root Mean Square Value function [retval] = rms1(sig) N = 20; for k = 1 : length(sig)/N - 1 sig_sum ...