Java的GUI设计小技巧
这里笔者写一些自己做GUI时候的心得,希望可以帮助需要学习的同学,函数的实现和界面设计不在同一个文件中,且涉及参数的传递
一、继承于JFrame
当遇到继承于JFrame的类的时候,可以省去建立对象,直接使用组件
setBounds(200, 200, 500, 400);
getContentPane().setBackground(Color.gray);
setVisible(true);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setTitle("MENU");
其中setBounds是设计窗口的大小,getContentPane是设计组件的,setdefault设计关闭类型这些内容在使用时可以
去查一下使用的手册,由于在构建程序的时候涉及到参数的传递,因此在传递时要注意参数的一一对应关系
在使用的时候Button按钮需要建立监听。其中还包括从键盘的监听
Change_Pass.addActionListener(gui);
Save_Money.addActionListener(gui);
WithDraw_Money.addActionListener(gui);
Exit.addActionListener(gui);
Query.addActionListener(gui);
Logoff.addActionListener(gui);
Last.addActionListener(gui);
public void Set_User_Output(JTextField op){
Output_Text = op;
// 注册监听键盘事件监听器
Output_Text.addKeyListener(new KeyAdapter() {
// 处理键盘事件
@Override
public void keyTyped(KeyEvent e) {
char key = e.getKeyChar();
if(!(key >= KeyEvent.VK_0 && key <= KeyEvent.VK_9)){
int su = JOptionPane.showConfirmDialog(null, "please enter Number", "WARNING",JOptionPane.OK_CANCEL_OPTION);
if (su == 0){
Output_Text.setText("");
}
e.consume();
}
}
});
}
监听对象也是要一一对应,不能出错,最后一个是传递当前的窗口,可以在其他的类中间关闭这个窗口的使用使用【建立的JFrame的对象】.dispose()
就可以关闭这个窗口,再通过建立的接收对象获取到用户接收到的内容
gui.Change_Pass_Button(Change_Pass);
gui.Logoff_Button(Logoff);
gui.Exit_Button(Exit);
gui.Query_Button(Query);
gui.WithDraw_Money_Button(WithDraw_Money);
gui.Save_Money_Button(Save_Money);
gui.Last_Button(Last);
gui.Set_JFrame(this);
以上方法基本完成了对文本的操作内容和实现函数之间的参数传递,每次在使用的时候一定要添加异常处理异常处理可以简化代码的错误判断
如果能详细的报出错误,代码就十分的友好。在取消判断是或者删除操作时一定要有确认判断。
int ju = JOptionPane.showConfirmDialog(null, "Do you want to Back", "Tip", JOptionPane.OK_CANCEL_OPTION);
if (ju == 0) {
JOptionPane.showMessageDialog(null, "The interface will Exit.......");
Id_Text.setText("");
Pw_Text.setText("");
Output_Text.setText("");
// 先关闭窗口
wm.dispose();
// 建立新的GUI界面
gui = new GUI();
}
showConfirmDialog就是用户确认的一个提示。
添加背景图片
// 建立java的图像界面 background放在了label中
// 文件的路径
// 当文件路径带上src的时候就可以获取本地的文件
ImageIcon image=new ImageIcon("src\\signer\\time6.jpg");
JLabel logolabel = new JLabel(image);
logolabel.setBounds(0, 0, image.getIconWidth(), image.getIconHeight());
// 设置底层把图片放在最下面的一层
getLayeredPane().add(logolabel,new Integer(Integer.MIN_VALUE));
//设置内容面板 getContentPane前面添加 这个JFrame的对象 由于这个图片是继承了JFrame 所以不需要对象 或者使用this
JPanel jp = (JPanel) this.getContentPane();
//设置内容面板未透明 true代表透明 透明之后的gui界面是看不到背景图像的
jp.setOpaque(false);
上面是添加背景图片的方法。音频还在探索.........。
二、不继承JFrame
不继承的JFrame就需要建立对象,JFrame的对象使用的时候和继承的一样但是需要添加【JFrame的对象名】.【组件方式】
关闭操作的时候【JFrame的对象】.dispose(),就可以了关于窗口关闭的四种方式可以取网上进行查看。其他的内容可以去网上查找资料。
最后源码在GitHub上面,读者可以自行下下来查看。代码一般,笔者还在努力。
https://github.com/pzq7025
这个是CSDN的地址:https://blog.csdn.net/qq_41910881/article/details/83834289, 我直接抄过来的
Java的GUI设计小技巧的更多相关文章
- IOS开发之代理的设计小技巧
1.关于代理对象的设计小技巧 在设计一个类,需要通过代理和协议来从外部获取需要的动态的数据.那么在这里设计使用代理会有两种方法. <第一种方法> 也是比较常见的: 在你设计的类中,声明一个 ...
- 超强干货,11个灰常实用的AI设计小技巧!
11个超级实用的AI设计小技巧!涉及到很多的实用操作,纯干货经验总结,灰常值得收藏,赶快转走学起来吧! 编辑:千锋UI设计
- IT咨询顾问:一次吐血的项目救火 java或判断优化小技巧 asp.net core Session的测试使用心得 【.NET架构】BIM软件架构02:Web管控平台后台架构 NetCore入门篇:(十一)NetCore项目读取配置文件appsettings.json 使用LINQ生成Where的SQL语句 js_jquery_创建cookie有效期问题_时区问题
IT咨询顾问:一次吐血的项目救火 年后的一个合作公司上线了一个子业务系统,对接公司内部的单点系统.我收到该公司的技术咨询:项目启动后没有规律的突然无法登录了,重新启动后,登录一断时间后又无法重新登 ...
- MySQL库表设计小技巧
前言: 在我们项目开发中,数据库及表的设计可以说是非常重要,我遇到过很多库表设计比较杂乱的项目,像表名.字段名命名混乱.字段类型设计混乱等等,此类数据库后续极难维护与拓展.我一直相信只有优秀的库表设计 ...
- Java的GUI设计
这里笔者写一些自己做GUI时候的心得,希望可以帮助需要学习的同学,函数的实现和界面设计不在同一个文件中,且涉及参数的传递 一.继承于JFrame 当遇到继承于JFrame的类的时候,可以省去建立对 ...
- Java 性能调优小技巧
1.在知道必要之前不要优化系统 这可能是最重要的性能调整技巧之一.你应该遵循常见的最佳实践做法并尝试高效地实现用例.但是,这并不意味着在你证明必要之前,你应该更换任何标准库或构建复杂的优化. 在大多数 ...
- Java的GUI设计中如何跨界面传值
在Java设计中我们会遇到登录界面的信息,在后面的某个情况也需要使用. 比如这是笔者的一个登录界面 可以看到获取密码和账号 在这个时候的功能的完成需要密码和账号 // 登录信息的获取 public S ...
- 写Java代码的一些小技巧
写Java代码有三年多了,遇到过很多坑,也有一些小小的心得.特地分享出来供各位学习交流.这些技巧主要涉及谷歌Guava工具类的使用.Java 8新特性的使用.DSL风格开发.代码封装等技巧. 一.nu ...
- APP图标设计小技巧:在iOS上快速获得APP图标的真实预览图
严格来说,这并不是一篇关于前端开发的文章,因为涉及到的知识非常浅.这只是一个向设计狮们分享的小经验,只是其中用到了一些前端内容. 最近接了个私活,了解到一个初创公司正在高价悬赏Logo(主要用于APP ...
随机推荐
- elasticsearch 不同集群数据同步
采用快照方式 1.源集群采用NFS,注意权限 2.共享目录完成后,在所有ES服务器上挂载为同一目录 3.创建快照仓库 put _snapshot/my_backup{ "type" ...
- 侯捷STL课程及源码剖析学习3: 深度探索容器list
一.容器概览 上图为 GI STL 2.9的各种容器.图中以内缩方式来表达基层与衍生层的关系.所谓的衍生,并非继承(inheritance)关系,而是内含(containment)关系.例如 heap ...
- 9. Palindrome Number (考虑负数的情况)
Determine whether an integer is a palindrome. Do this without extra space. long int reverse(int x) { ...
- oracle数据库查询出多条数据,合并,之后列转行
select B.enterprise_code, B.enterprise_name, sum(B.h0_overnum) AS over00, sum(B.h1_overnum) AS over0 ...
- Codeforces Beta Round #16 (Div. 2 Only)
Codeforces Beta Round #16 (Div. 2 Only) http://codeforces.com/contest/16 A 水题 #include<bits/stdc+ ...
- Linux 下 mysql的基本配置
Linux 下 mysql的基本配置 2013年02月27日 ⁄ MySQL ⁄ 共 3000字 ⁄ 暂无评论 ⁄ 被围观 2,483 views+ 1. Linux mysql安装: $ yu ...
- CodeForces - 873B Balanced Substring(思维)
inputstandard input outputstandard output You are given a string s consisting only of characters 0 a ...
- [codeforces_597B] Restaurant(贪心)
题目链接 http://codeforces.com/problemset/problem/597/B 题意 输入:区间数目n.及n个区间的起止(左闭右闭). 输出:最多不重叠的区间有多少个. 思路 ...
- 日志排序(gets函数与sscanf的使用)
题目链接:https://www.nowcoder.com/practice/0f64518fea254c0187ccf0ea05019672?tpId=40&tqId=21363&t ...
- 同种类型不同名字的变量在for循环中操作
InfoViewController * info = [[InfoViewController alloc] init]; HeroViewController * hero = [[HeroVie ...