swing快速入门(二十七)

注释很详细,直接上代码

上一篇

新增内容

1.为按钮指定图标

2. 列表框的并列

3.菜单项绑定快捷键

4.控件悬浮提示信息

5.菜单项设置小图标

6.五种布局风格右键选择切换

package swing21_30;import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;public class swing_test_25 {JFrame frame = new JFrame("swing测试");//定义一个按钮,并为其指定图标Icon okIcon = new ImageIcon("img/ok.png");JButton ok = new JButton("确定",okIcon);//定义一个单选按钮,初始处于选中的状态JRadioButton male = new JRadioButton("男",true);//定义一个单选按钮,初始处于未选中状态JRadioButton female = new JRadioButton("女",false);//定义一个ButtonGroup,把male和female组合起来,实现单选ButtonGroup buttonGroup  = new ButtonGroup();//定义一个复选框,初始处于没有选中状态JCheckBox married = new JCheckBox("是否已婚?",false);//定义一个数组存储颜色String[] colors = { "红色", "绿色 " , "蓝色 " };//定义一个下拉选择框,展示颜色JComboBox<String> colorChooser = new JComboBox<String>(colors);//定一个列表框,展示颜色JList<String> colorList = new JList<String>(colors);//定义一个8行20列的多行文本域JTextArea textArea = new JTextArea(8,20);//定义一个40列的单行文本域JTextField name = new JTextField(40);//定义菜单条JMenuBar menuBar = new JMenuBar();//定义菜单JMenu file = new JMenu("文件");JMenu edit = new JMenu("编辑");//创建菜单项,并指定图标JMenuItem newItem = new JMenuItem("新建",new ImageIcon("img/new.png"));JMenuItem saveItem = new JMenuItem("保存",new ImageIcon("img/save.png"));JMenuItem exitItem = new JMenuItem("退出",new ImageIcon("img/exit.png"));JCheckBoxMenuItem autoWrap = new JCheckBoxMenuItem("自动换行");JMenuItem copyItem = new JMenuItem("复制",new ImageIcon("img/copy.png"));JMenuItem pasteItem = new JMenuItem("粘贴",new ImageIcon("img/paste.png"));//定义二级菜单,将来会添加到编辑中JMenu format = new JMenu("格式");JMenuItem commentItem = new JMenuItem("注释");JMenuItem cancelItem = new JMenuItem("取消注释");//定义一个右键菜单,用于设置程序的外观风格JPopupMenu pop = new JPopupMenu();//定义一个ButtongGroup对象,用于组合风格按钮,形成单选ButtonGroup flavorGroup = new ButtonGroup();//定义五个单选按钮菜单项,用于设置程序风格JRadioButtonMenuItem metalItem = new JRadioButtonMenuItem("Metal 风格",true);JRadioButtonMenuItem nimbusItem = new JRadioButtonMenuItem("Nimbus 风格",true);JRadioButtonMenuItem windowsItem = new JRadioButtonMenuItem("Windows 风格",true);JRadioButtonMenuItem classicItem = new JRadioButtonMenuItem("Windows 经典风格",true);JRadioButtonMenuItem motifItem = new JRadioButtonMenuItem("Motif 风格",true);//初始化界面public void init(){//----------------------组合主区域------------------------//创建一个装载文本框和按钮的JPanelJPanel bottom = new JPanel();bottom.add(name);bottom.add(ok);frame.add(bottom, BorderLayout.SOUTH);//创建一个装载下拉选择框、三个JChekBox的JPanelJPanel checkPanel = new JPanel();checkPanel.add(colorChooser);buttonGroup.add(male);buttonGroup.add(female);checkPanel.add(male);checkPanel.add(female);checkPanel.add(married);//创建一个垂直排列的Box,装载checkPanel和多行文本域Box topLeft = Box.createVerticalBox();//使用JScrollPane作为普通组件的JViewPortJScrollPane taJsp = new JScrollPane(textArea);topLeft.add(taJsp);topLeft.add(checkPanel);//创建一个水平排列的Box,装载topLeft和colorListBox top = Box.createHorizontalBox();top.add(topLeft);top.add(colorList);//将top Box 添加到窗口的中间frame.add(top);//---------------------------组合菜单条----------------------------------------------//为newItem添加快捷键 ctrl+NnewItem.setAccelerator(KeyStroke.getKeyStroke('N', InputEvent.CTRL_MASK));newItem.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {textArea.append("用户点击了“新建”菜单\n");}});//为file添加菜单项file.add(newItem);file.add(saveItem);file.add(exitItem);//为edit添加菜单项edit.add(autoWrap);edit.addSeparator();edit.add(copyItem);edit.add(pasteItem);//为commentItem添加提示信息commentItem.setToolTipText("将程序代码注释起来");//为format菜单添加菜单项format.add(commentItem);format.add(cancelItem);//给edit添加一个分隔符edit.addSeparator();//把format添加到edit中形成二级菜单edit.add(format);//把edit file 添加到菜单条中menuBar.add(file);menuBar.add(edit);//把菜单条设置给窗口frame.setJMenuBar(menuBar);flavorGroup.add(metalItem);flavorGroup.add(nimbusItem);flavorGroup.add(windowsItem);flavorGroup.add(classicItem);flavorGroup.add(motifItem);//给5个风格菜单创建事件监听器ActionListener flavorLister = new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {String command = e.getActionCommand();try {changeFlavor(command);} catch (Exception e1) {e1.printStackTrace();}}};//为5个风格菜单项注册监听器metalItem.addActionListener(flavorLister);nimbusItem.addActionListener(flavorLister);windowsItem.addActionListener(flavorLister);classicItem.addActionListener(flavorLister);motifItem.addActionListener(flavorLister);pop.add(metalItem);pop.add(nimbusItem);pop.add(windowsItem);pop.add(classicItem);pop.add(motifItem);//调用textArea组件的setComponentPopupMenu即可设置右键菜单,无需使用事件textArea.setComponentPopupMenu(pop);// 设置关闭窗口时推出程序frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置jFrame最佳大小并可见frame.pack();frame.setVisible(true);}//定义一个方法,用于改变界面风格private void changeFlavor(String command) throws Exception{switch (command){case "Metal 风格":UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");break;case "Nimbus 风格":UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");break;case "Windows 风格":UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");break;case "Windows 经典风格":UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel");break;case "Motif 风格":UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");break;}//更新窗口内顶级容器以及所有组件的UISwingUtilities.updateComponentTreeUI(frame.getContentPane());//更新mb菜单条及每部所有组件UISwingUtilities.updateComponentTreeUI(menuBar);//更新右键菜单及内部所有菜单项的UISwingUtilities.updateComponentTreeUI(pop);}public static void main(String[] args) {//创建窗口new swing_test_25().init();}}

效果演示:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

素材链接:

img-blog.csdnimg.cn/direct/e2ba782862f64694af460841dbb86bb5.png

请添加图片描述

img-blog.csdnimg.cn/direct/5e09d28a6caf416d82145600077152e7.png

请添加图片描述
img-blog.csdnimg.cn/direct/de7ff1de40f84947a7e8a454e4096dcc.png

请添加图片描述

img-blog.csdnimg.cn/direct/8ea757b4c350484eb7dfa0ef265ea634.png

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/528761.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

k8s pod里访问不到外部ip_K8S容器网络如何实现通信?

Kubernetes&#xff08;简称K8S&#xff09;正迅速成为云计算中部署和管理软件的新标准&#xff0c;那么K8S的容器网络是如何通信的呢&#xff1f;在了解容器网络通信原理之前&#xff0c;我们先学习下K8S中主要组件的定义&#xff0c;包括&#xff1a;节点(Node)、容器、POD、…

tps 数据库写并发衡量_硬核干货!抗住百万高并发的 6 个关键技术!

一、什么是高并发高并发&#xff08;High Concurrency&#xff09;是互联网分布式系统架构设计中必须考虑的因素之一&#xff0c;它通常是指&#xff0c;通过设计保证系统能够同时并行处理很多请求。高并发相关常用的一些指标有响应时间&#xff08;Response Time&#xff09;&…

ioc spring 上机案例_抛开Spring去理解IOC思想 - 原来IOC容器这么简单

很多小伙伴们看到标题可能就会想到抛开Spring就不会存在IOC思想了&#xff0c;其实不然在接下来的文章中就会讲述到。很多小伙伴在理解IOC的时候通常会和Spring放到一起去学习&#xff0c;首先呢Spring设计的非常之巧妙而且里面包含了很多除去IOC的其他功能。这样会导致我们在S…

余弦信号频谱表达式_信号傅里叶变换系列文章(1):傅里叶级数、傅里叶系数以及傅里叶变换...

傅里叶级数是周期信号的时域表达式&#xff0c;而傅里叶变换是非周期信号或周期信号的频谱&#xff08;频域函数&#xff09;&#xff0c;要想了解它们之间的关系&#xff0c;需要你耐心看完下面内容。学过"信号与系统"等课程的人往往会被许多问题所困惑&#xff0c;…

5s的app显示无法连接服务器,苹果iphone5s手机无法连接App Store问题解决方法汇总...

iphone5s无法连接App Store怎么办&#xff1f;大家在使用iphone5s过程中可能会遇到无法连接app store的问题&#xff0c;那怎么办呢&#xff1f;本文小编就主要给大家讲解一下如何解决iphone5s无法连接App Store的问题。iphone5s无法连接App Store解决方法如下&#xff1a;1)还…

变频器输出功率_100米的深井泵,如何接变频器,怎样控制

深井水泵的控制上&#xff0c;不外是为了保证负载水流的恒定性&#xff0c;一般可以通过恒压闭环方式来完成&#xff0c;如果有储水池的&#xff0c;液位闭环也可以。而深井水泵选用变频器&#xff0c;变频器装地面&#xff0c;你的线路有100米这么长&#xff0c;一般需要考虑加…

云服务器cvm系统,云服务器 cvm 自带系统

云服务器 cvm 自带系统 内容精选换一换如果Linux操作系统云服务器未安装密码重置插件&#xff0c;可以参见本节内容重新设置密码。本节操作重置的是root用户的密码&#xff0c;您可以重置完root密码后登录云服务器后再更换秘钥或重置非root用户的密码。Windows操作系统请参见重…

js距离单位换算_英语中常用的度量衡等单位,与我们用的不一样,这些差异点快收藏...

在日常生活中&#xff0c;我们几乎每天都会用到度量衡等度量单位&#xff0c;比如&#xff1a;去市场买菜&#xff0c;会用到几斤几两&#xff0c;量距离要知道多长&#xff0c;卖房子必须知道房屋的面积等等。度量单位在我们的生活中是非常重要的&#xff0c;可以说已经到了你…

开发缺点_开发移动端手机APP有哪些优缺点?

在当今移动互联网高速发达的现在&#xff0c;如果非要说什么工具最重要&#xff0c;那么一定要数手机APP了。企业可以借助它来进行移动端的营销&#xff0c;提高企业品牌推广力度和盈利&#xff1b;用户也可以借助它解决日常生活衣食住行等各方面的问题&#xff0c;因此备受人们…

用户修改了信息jwt服务器怎么识别,jwt验证登录信息

为什么要告别session&#xff1f;有这样一个场景&#xff0c;系统的数据量达到千万级&#xff0c;需要几台服务器部署&#xff0c;当一个用户在其中一台服务器登录后&#xff0c;用session保存其登录信息&#xff0c;其他服务器怎么知道该用户登录了&#xff1f;(单点登录)&…

获取朋友圈照片_朋友圈可以发 30 秒视频啦!用微视这个新功能就能办到

对于许多热爱分享生活中所见所闻的朋友来说&#xff0c;在发朋友圈时可能都会有这样的感觉&#xff1a;只能分享 15 秒以内的视频&#xff0c;完全不够用啊。如果你也有同样的困扰&#xff0c;今天&#xff0c;A 君就给你介绍一个实用新功能&#xff0c;让你能够在朋友圈中尽情…

苹果手机更改照片大小kb_苹果手机照片视频删除了怎样恢复?专业人士建议你这样做...

照片视频记录我们的点点滴滴&#xff0c;成长中的酸甜苦辣。当我们手机相册中的照片视频误删了我们该怎么做呢&#xff1f;如何才能挽回我们的损失&#xff1f;来看看专家让你怎么做。方法一&#xff1a;【最近删除】苹果自带有一个照片回收站【最近删除】恢复功能可以恢复里面…

复制过去格式不一样_不一样的立春节气:一个新的轮回开启,万物更新,疫情终将过去...

今天是立春&#xff0c;二十四节气中第一个节气&#xff0c;也是一个充满希望的节气。我国自古是农业大国&#xff0c;春种秋收&#xff0c;二十四节气是我国劳动人民独创的&#xff0c;也是先辈们了解自然的智慧结晶。它反映了季节的变化&#xff0c;影响着千家万户的衣食住行…

字符去多余空格_【Excel技巧】批量去空格删换行,用这两个函数简单又快速

今天分享两个函数TRIM函数和CLEAN函数。估计有些人还没见过这两个函数吧&#xff0c;不知道它们是用来干嘛的。跟你说啊&#xff0c;这两个函数都是用来清理、规范数据的。别不信&#xff0c;现在我们一起来看看他们的用法。一、TRIM函数比如&#xff0c;从网页上复制一份数据粘…

逗号后面统一加空格_用99个空格来提取Excel单元格数据,真的是脑洞大开!!!...

回复[目录]学习113篇Excel教程全套Excel视频教程&#xff0c;微信扫码观看需要从规格型号中提取容值、封装、耐压三组数据&#xff0c;如下&#xff1a; 数据源在A列&#xff0c;数据量很大&#xff0c;需要提取的容值、封装和耐压三项数据在单元格中的字节位置不固定。能找到的…

微服务 注册中心_4.微服务架构的第二个组件:注册中心

在微服务架构下&#xff0c;主要有三种角色&#xff1a;服务提供者(RPC Server)服务消费者(RPC Client)服务注册中心(Registry)RPC Server&#xff1a;服务提供者&#xff0c;启动时根据服务发布文件server.xml中的配置信息向Registry注册自身服务&#xff0c;并定期向Registry…

2018怎么打开2019_2019 年,我还是没有摆脱 Micro USB

时间回到 2017 年春&#xff0c;那时候的我想买一块移动硬盘。当时乐视的超级手机已经发布一年多了&#xff0c;苹果也在前一年发布了新款 MacBook Pro&#xff0c;USB Type-C 这个新鲜的接口已经进入大众的视野。移动硬盘常用的 Micro USB 3.0 接口的质量良莠不齐&#xff0c;…

中添加复选框_Word/excel中在方框中打钩/叉的符号,简单方便快捷

方法1&#xff1a;插入特殊符号将光标定位于需要打钩的地方&#xff0c;选择【插入】——【符号】——【其他符号】——更改字体为【Windings2】方法2&#xff1a;使用快捷键从上面的截图中可以看到设置快捷键&#xff0c;所以在插入特殊符号的时候就可以输入数字2611后按住【A…

2 数据源配置_如何在程序运行中动态切换数据源?架构师必读秘笈

说起动态数据源&#xff0c;大家应该也不陌生。例如在读写分离系统中&#xff0c;则要对请求中的读写操作进行分离&#xff0c;让读和写落在不同的数据库上&#xff1b;例如在多租户系统中&#xff0c;则要根据请求来源租户的不同&#xff0c;让其落在不同租户的数据库上&#…

数字滚动_告别单调!让PPT数字滚动起来。

大家好&#xff0c;我是三石。在PPT的制作过程中&#xff0c;数字是不可缺少的元素。如何设计制作&#xff0c;才能使简单的数字变得有活力。废话不多说看效果~其实制作方式很简单&#xff0c;跟着我的步骤你也能做出来。制作步骤&#xff1a;1、首先要制作出数字条可以通过Exc…