Java核心技术 卷1 基础知识—Swing用户组件及JAR

Wesley13
• 阅读 472

《第12章 Swing用户组件》

Swing设计者采用了模型-视图-控制器(model-view-controller,MVC)模式来设计用户组件 它限制了一个对象拥有的功能数量,在设计组件时一般实现三个独立的类:

  • 模型(model):存储内容,必须实现改变内容或者查找内容的方法,模型是完全不可见的
  • 视图(view):显示内容,即显示存储在模型中的数据
  • 控制器(controller):处理用户输入,如点击鼠标或者敲击键盘

当然,程序员使用Swing组件时,通常不需要考虑MVC模式 因为每个用户界面元素都有一个包装器类来保存模型和视图

布局管理器

通常,组件放在容器中,布局管理器决定容器中的组件的具体放置的位置和大小 每一个容器都有默认的布局管理器,但可以重新进行设置,通过setLayout方法

流布局管理器,逐个添加,当一行的空间不够时,会显示在另一行上 边框布局管理器,把内容窗格划分为中部、北部、南部、东部或者西部 网格布局管理器,按行和列排列所有的组件,每个单元的大小都是一样的

文本输入

文本域(JTextField),只能接受单行文本的输入 文本区(JTextArea),能接受多行文本的输入 JPassword,也只能接受单行文本,但不会将输入的内容显示出来 JPasswordField,一种特殊类型的文本域,用户输入的字符都用回显字符(如*)来表示

选择组件

JRadioButton,单选框,只能选择一个,即单选 JCheckBox,复选框,可以多选 JComboBox,组合框,当用户点击这个组件时,选择列表会下拉出来,用户可以从中选择一项 JSlider,滑动条,允许进行连续值的选择 JSlider slider = new JSlider(min,max,initialValue);

菜单

JMenubar,菜单栏,它可以添加到任意位置,但通常放置在框架的顶部 JMenu,菜单,添加在菜单栏中 JMenuItem,菜单项,添加在菜单中 快捷键,可以在菜单项的构造函数中指定一个快捷字母来为菜单项设置快捷键 JMenuItem about new JMenuItem("About",'A'); 当显示菜单时,用户可以按下A键来就可以选择菜单项

加速器,可以在不打开菜单的情况下选择菜单栏的快捷键 很多程序都把加速器CTRL+O和CTRL+S关联到File菜单中的Open和Save菜单项 可以使用setAccelerator将加速器关联到一个菜单项中 这个方法使用KeyStroke类型的对象作为参数 如:将加速器CTRL+O关联到OpenItem菜单项 OpenItem.setAccelerator(KeyStroke.getKeyStroke("ctrl o")); 这是用户按下加速器组合键时,就会自动选择相应的菜单项,同时激活一个事件,这与手工地选择这个菜单项一样

工具栏,JToolBar,在程序中提供的快速访问常用命令的按钮栏 其特殊之处在于,可以将它随处移动 与之搭配使用的是工具提示,当光标停留在某个按钮片刻时,工具提示就会被激活

对话框

与大多数窗口一样,AWT也分为模式对话框和无模式对话框

模式对话框是指在结束对它的处理之前,不允许用户与应用程序的其余窗口进行交互 模式对话框主要用于在程序继续运行之前获取用户提供的信息

无模式对话框是指允许用户同时在对话框和应用程序的其他窗口中输入信息

JOptionPane,选项对话框 创建对话框,需要从JDialog中派盛一个类,这与应用程序窗口派生于JFrame的过程完全一样 JFileChoose,文件对话框,用于显示文件和目录并让用户做出选择 JColorChooser,颜色选择器,也是一个对话框,满足用户选择颜色的需求

《第13章 部署Java应用程序》

所谓部署,即将Java程序打包,并部署到用户的计算机上

JAR,Java归档文件,既可以包含大量文件,也可以包含诸如图像和声音这些其他类型的文件 可以使用jar工具制作JAR文件,该工具在默认的JDK安装中,位于jdk/bin目录下 创建一个常用的JAR文件的命令为: jar cvf JARFileName File1 File2 而jar命令的格式为: jar options File1 File2 ... jar程序选项 Java核心技术 卷1 基础知识—Swing用户组件及JAR

可以将应用程序,程序组件以及代码库打包在JAR文件中

每个JAR文件还包含一个清单文件,被命名为MANIFEST.MF,位于JAR的一个特殊META-INF子目录中

可以使用jar命令中的e选项指定程序的入口点 jar cvfe MyProgram.jar com.mycompany.mypkg.MainAppClass files to add 或者,可以在清单中指定应用程序的主类 Main-Class:com.mycompany.mypkg.MainAppClass

当然,目前有很多Java的IDE都提供了将应用程序打包为JAR文件的功能 启动程序: java -jar MyProgram.jar

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Stella981 Stella981
2年前
Nginx + lua +[memcached,redis]
精品案例1、Nginxluamemcached,redis实现网站灰度发布2、分库分表/基于Leaf组件实现的全球唯一ID(非UUID)3、Redis独立数据监控,实现订单超时操作/MQ死信操作SelectPollEpollReactor模型4、分布式任务调试Quartz应用
Easter79 Easter79
2年前
Swing中事件的三种处理方法
 Swing是目前Java中不可缺少的窗口工具组,是用户建立图形化用户界面(GUI)程序的强大工具。JavaSwing组件自动产生各种事件来响应用户行为。如当用户点击按钮或选择菜单项目时,Swing组件会产生一个ActionEvent。Swing组件会产生许多事件,如ActionEvents,ChangeEvents,ItemEvents等,来响应用户的鼠
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Stella981 Stella981
2年前
JOptionPane修改图标
1.在Linux平台下.JOptionPane会显示Java默认的图标,在window平台不显示图标,如何替换这个图标了?2JOptionPane.setIcon(Icon)修改的是内容区域的icon,而不是左上角的Icon.所以需要通过修改Jdialog/Frame的图标来达到修改默认图标的问题.3.代码:if(JOptio
Easter79 Easter79
2年前
Swing编程
    Swing开发图形界面比AWT更加优秀,因为Swing是一种轻量级组件,它采用100%的java实现,不再依赖于本地平台的图形界面。    Swing提供了比AWT更多的图形界面组件。因此可以开发出更美观的图形界面。    AWT只能使用各种平台上GUI组件的交集。    Swing可以提供了如JTabbedPane、JDesktopP
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞背景在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这