java 图形化工具Swing 基本使用
Swing介绍:
Swing组件的基本使用
大部分Swing组件都是JComponent抽象类的直接或间接子类,JComponent类定义了所有子类组件的通用方法。JComponent类是AWT中java.awt.Container类的子类,这也是AWT和Swing的联系之一。绝大部分Swing组件类继承了Container类,所以Swing组件都可作为容器使用。
- JComboBox: 对应AWT里的Choice组件,但比Choice组件功能更丰富
- JFileChooser: 应于AWT里的FileDialog组件
- JScrollBar: 对应于AWT里的Scrollbar组件,注意两个组件类名中 字母的大小写差别。
- JCheckBox 对应于AWT里的checkbox组件,注意两个组件类名中 字母的大小写差
- JCheckBoxMenuitem: 对应于AWT里的CheckboxMenuItem 组件,注意两个组件类名中字母的大小写差别。
- (1),可以为Swing组件设置提示信息。用setToolTipText()方法。
- (2),很多Swing组件,比如我们的按钮,标签,菜单项等,除了使用文字之外,还可以用图标来修饰自己。Swing为Icon接口提供了一个实现类:ImageIcon
- (3),支持插拔式的外观风格。
- (4),支持设置边框
示例程序截图:

示例代码:
package swingtest; import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionListener; /**
* @ClassName SwingComponent
* @projectName: object1
* @author: Zhangmingda
* @description: XXX
* date: 2021/5/8.
*/
public class SwingComponent {
public static void main(String[] args) {
JFrame jFrame = new JFrame("Swing基本组件");
//菜单栏
JMenuBar jMenuBar = new JMenuBar();
//菜单项
JMenu fileMenu = new JMenu("文件");
JMenu editMenu = new JMenu("编辑");
//菜单子项
JMenuItem newMenuItem = new JMenuItem("新建",new ImageIcon("图形化编程/src/swingtest/ico/new.png"));
JMenuItem saveMenuItem = new JMenuItem("保存",new ImageIcon("图形化编程/src/swingtest/ico/new.png"));
JMenuItem exitMenuItem = new JMenuItem("退出",new ImageIcon("图形化编程/src/swingtest/ico/new.png"));
fileMenu.add(newMenuItem);
fileMenu.add(saveMenuItem);
fileMenu.add(exitMenuItem);
//编辑菜单子项
//菜单子项
JMenuItem autoLenMenuItem = new JMenuItem("自动换行",new ImageIcon("图形化编程/src/swingtest/ico/new.png"));
JMenuItem copyMenuItem = new JMenuItem("复制",new ImageIcon("图形化编程/src/swingtest/ico/new.png"));
JMenuItem pasteMenuItem = new JMenuItem("粘贴",new ImageIcon("图形化编程/src/swingtest/ico/new.png"));
JMenuItem noteMenuItem = new JMenuItem("注释",new ImageIcon("图形化编程/src/swingtest/ico/new.png"));
JMenuItem cancleNoteMenuItem = new JMenuItem("取消注释",new ImageIcon("图形化编程/src/swingtest/ico/new.png"));
JMenuItem formatJMenuItem = new JMenu("格式");
formatJMenuItem.add(noteMenuItem);
formatJMenuItem.add(cancleNoteMenuItem);
editMenu.add(autoLenMenuItem);
editMenu.addSeparator();//换行符
editMenu.add(copyMenuItem);
editMenu.add(pasteMenuItem);
editMenu.addSeparator();//换行符
editMenu.add(formatJMenuItem);
//菜单栏添加菜单
jMenuBar.add(fileMenu);
jMenuBar.add(editMenu);
jFrame.setJMenuBar(jMenuBar);
//底部菜单
JPanel bottomPanel = new JPanel();
bottomPanel.add(new JTextField(30));
bottomPanel.add(new JButton("确定"));
jFrame.add(bottomPanel,BorderLayout.SOUTH);
/**
* 中间部分
*/
Box centerBox = Box.createHorizontalBox(); //水平盒子
/**
* 中间左
*/
Box centerLeftBox = Box.createVerticalBox(); //垂直盒子
/**
* 中间左上
*/
JTextArea jTextArea = new JTextArea(8, 40); //文本框
//带滚动条的容器,创建时传入一个文本框
JScrollPane jScrollPane = new JScrollPane(jTextArea);
centerLeftBox.add(jScrollPane); //中间左边的垂直盒子添加 带滚动条的容器
/**
* 中间左下
*/
JPanel leftBottomPanel = new JPanel();
//复选框
leftBottomPanel.add(new JComboBox<String>(new String[]{"红色","绿色", "蓝色"})); //复选框
//单选框、
JRadioButton male = new JRadioButton("男",true);
JRadioButton female = new JRadioButton("女");
ButtonGroup sexGroup = new ButtonGroup();
sexGroup.add(male); //单选组添加选项
sexGroup.add(female); //单选组添加选项
leftBottomPanel.add(male);leftBottomPanel.add(female); //左下容器添加选项
//勾选框
leftBottomPanel.add(new JCheckBox("婚否"));
//中间左添加中间左下
centerLeftBox.add(leftBottomPanel);
/**
* 中间右
*/
Box centerRightBox = Box.createVerticalBox(); //后边的垂直盒子
centerRightBox.add(new JList<String>(new String[]{"红色", "粉色","黄色"}));
/**
* 水平容器添加左边盒子,窗口添加水平容器
*/
centerBox.add(centerLeftBox);// 水平盒子添加左边的盒子
centerBox.add(centerRightBox);// 水平盒子添加右边的盒子
jFrame.add(centerBox); // 窗口添加水平盒子
/**
* 右键菜单
*/
JPopupMenu popupMenu = new JPopupMenu();
//右键单选框菜单项
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风格");
ButtonGroup flavorGroup = new ButtonGroup();//单选的菜单项
flavorGroup.add(nimbusItem);
flavorGroup.add(metalItem);
flavorGroup.add(windowsItem);
flavorGroup.add(classicItem);
flavorGroup.add(motifItem);
popupMenu.add(motifItem);
popupMenu.add(classicItem);
popupMenu.add(windowsItem);
popupMenu.add(nimbusItem);
popupMenu.add(metalItem);
//右键菜单鼠标单击监听器
ActionListener flavorListener = e -> {
try {
switch (e.getActionCommand()) {
// 设置Metal风格
case "Metal风格":
UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
break;
// 设置Nimbus风格
case "Nimbus风格":
UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
break;
// 设置Windows风格
case "Windows风格":
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
break;
// 设置Windows经典风格
case "Windows经典风格":
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel");
break;
// 设置Motif风格
case "Motif风格":
UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
break;
}
} catch (IllegalAccessException ex) {
ex.printStackTrace();
} catch (InstantiationException ex) {
ex.printStackTrace();
} catch (UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
} finally {
//更新各个组件的风格,jframe.getContentPane()就是获取frame的各个组件
SwingUtilities.updateComponentTreeUI(jFrame.getContentPane());
SwingUtilities.updateComponentTreeUI(jMenuBar);
SwingUtilities.updateComponentTreeUI(popupMenu);
}
};
//右键菜单绑定监听器
metalItem.addActionListener(flavorListener);
nimbusItem.addActionListener(flavorListener);
windowsItem.addActionListener(flavorListener);
classicItem.addActionListener(flavorListener);
motifItem.addActionListener(flavorListener);
//文本框设置右键菜单
jTextArea.setComponentPopupMenu(popupMenu); //关闭窗口自动退出程序
jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
jFrame.pack();
jFrame.setLocation(400,300);
jFrame.setVisible(true);
}
}
java 图形化工具Swing 基本使用的更多相关文章
- java 图形化工具Swing 创建工具条
通过JToolBar来创建工具条: Swing提供了JToolBar类来创建工具条,创建JToolBar对象时可以指定如下两个参数: (1),name: 该参数指定该工具条的名称. (2),orien ...
- java 图形化工具Swing 颜色文件选择器 ;JColorChooser;JFileChoose
使用JColorChooser: JColorChooser用于创建颜色选择器对话框,该类的用法非常简单,该类主要提供了如下两个静态方法: (1),showDialog(Component compo ...
- java 图形化工具Swing 监听键盘输入字符触发动作getInputMap();getActionMap();
双缓冲技术的介绍: 所有的Swing组件默认启用双缓冲绘图技术.使用双缓冲技术能改进频繁重绘GUI组件的显示效果(避免闪烁现象)JComponent组件默认启用双缓冲,无须自己实现双缓冲.如果想关闭双 ...
- 转:二十七、Java图形化界面设计——容器(JFrame)
转:http://blog.csdn.net/liujun13579/article/details/7756729 二十七.Java图形化界面设计——容器(JFrame) 程序是为了方便用户使用的, ...
- 二十七、Java图形化界面设计——容器(JFrame)
摘自http://blog.csdn.net/liujun13579/article/details/7756729 二十七.Java图形化界面设计--容器(JFrame) 程序是为了方便用户使用的, ...
- Java图形化界面设计——容器(JFrame)
Java图形化界面设计——容器(JFrame) 程序是为了方便用户使用的,因此实现图形化界面的程序编写是所有编程语言发展的必然趋势,在命令提示符下运行的程序可以让我们了解java程序的基本知识体系结构 ...
- Java 图形化界面设计(GUI)实战练习(代码)
关于Java图形化界面设计,基础知识网上可搜,下面简单介绍一下重点概念,然后就由浅入深代码实例. 程序是为了方便用户使用的,Java引入图形化界面编程. 1.JFrame 是容器类 2.AWT 是抽象 ...
- 01 Java图形化界面设计——容器(JFrame)
程序是为了方便用户使用的,因此实现图形化界面的程序编写是所有编程语言发展的必然趋势,在命令提示符下运行的程序可以让我们了解java程序的基本知识体系结构,现在就进入java图形化界面编程. 一.Jav ...
- 三十二、Java图形化界面设计——布局管理器之CardLayout(卡片布局)
摘自 http://blog.csdn.net/liujun13579/article/details/7773945 三十二.Java图形化界面设计--布局管理器之CardLayout(卡片布局) ...
随机推荐
- Vue自定义组件实现v-model指令
Tips: 本文所描述的Vue均默认是Vue2版本 在我们初次接触Vue的时候,一定会了解到一个语法糖,那就是v-model指令,它带给我们的第一印象就是它可以实现双向绑定 那么,什么是双向绑定?通俗 ...
- Codeforces 446D - DZY Loves Games(高斯消元+期望 DP+矩阵快速幂)
Codeforces 题目传送门 & 洛谷题目传送门 神仙题,%%% 首先考虑所有格子都是陷阱格的情况,那显然就是一个矩阵快速幂,具体来说,设 \(f_{i,j}\) 表示走了 \(i\) 步 ...
- FVCOM泥沙模块河流边界处理
简介 入流河流携带泥沙可以按照节点和边界两种形式给定,这两种方法都是在相关的节点上进行直接赋值,并不能保证进入计算域内泥沙总体积. 相关设置 XX_run.nml 河流参数设置 &NML_RI ...
- 数据库命令补全工具mycli
一.安装 我的数据库安装的是win版本,安装python后,直接命令行: 1 pip install mycli 即可. 二.使用 进入命令行后输入: 1 mycli -u root -p 88888 ...
- 工作学习1-tcp自连接
运维同事反馈服务起不来.下面为了方便,写了一个demo来展示. https://gitee.com/northeast_coder/code/tree/master/case/case1_tcp_se ...
- WebRTC本地分享屏幕,录制屏幕
WebRTC有分享屏幕的功能.使用的是getDisplayMedia方法.用户同意分享屏幕后,可以拿到视频流. 再结合MediaRecorder和Blob,把视频流数据存下来,就能得到录制屏幕的视频. ...
- linux添加用户、权限
# useradd –d /usr/sam -m sam 此命令创建了一个用户sam,其中-d和-m选项用来为登录名sam产生一个主目录/usr/sam(/usr为默认的用户主目录所在的父目录). 假 ...
- mysql_取分组后的前几行值
--方法一: select a.id,a.SName,a.ClsNo,a.Score from Table1 a left join Table1 b on a.ClsNo=b.ClsNo and a ...
- spring注解-属性
一.@Value 基本数值 可以写SpEL: #{} 可以写${}取出配置文件[properties]中的值(在运行环境变量里面的值) @Value("张三") private S ...
- 【Linux】【Basis】CentOS启动流程
1. 基础概念 1.1 Linux系统的组成部分:内核+根文件系统 内核:进程管理.内存管理.网络协议栈.文件系统.驱动程序.安全功能 IPC:In ...