这里笔者写一些自己做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 ...
随机推荐
-
jQuery 2.0.3 源码分析 Deferred(最细的实现剖析,带图)
Deferred的概念请看第一篇 http://www.cnblogs.com/aaronjs/p/3348569.html ******************构建Deferred对象时候的流程图* ...
-
C#中Trim()、TrimStart()、TrimEnd()的用法
string s = " from dual union all "; s = s.Trim().TrimEnd("union all".To ...
-
linux mysql操作命令
1.linux下启动mysql的命令:mysqladmin start/ect/init.d/mysql start (前面为mysql的安装路径) 2.linux下重启mysql的命令:mysqla ...
-
oracle 取前10条记录
1.oracle 取前10条记录 1) select * from tbname where rownum < 11; 2) select * from (select * from tbnam ...
-
TP复习11
## ThinkPHP 3.1.2 模板中的基本语法#讲师:赵桐正微博:http://weibo.com/zhaotongzheng 本节课大纲:一.导入CSS和JS文件 1.css link js ...
-
【转】shell 教程——07 Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数
前面已经讲到,变量名只能包含数字.字母和下划线,因为某些包含其他字符的变量有特殊含义,这样的变量被称为特殊变量. 例如,$ 表示当前Shell进程的ID,即pid,看下面的代码: $echo $$ 运 ...
-
关于sql 资源竞争死锁现象
问题:System.Exception: 事务(进程 ID 321)与另一个进程被死锁在 锁 | 通信缓冲区 资源上,并且已被选作死锁牺牲品.请重新运行该事务 死锁最深层的原因就是一个:资源竞争 表现 ...
-
AS3条件编译
package { import flash.display.Sprite; public class Main extends Sprite { public function Main() { s ...
-
POJ 1321 棋盘问题(DFS板子题,简单搜索练习)
棋盘问题 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 44012 Accepted: 21375 Descriptio ...
-
POJ3686 The Windy&#39;s
嘟嘟嘟 刚做费用流,思路完全不对呀-- 应该这么想(应该说敢这么想):这道题的关键在于怎么体现这个玩具是第几个加工的,只有这才能求出他的加工时间(因为加工时间包括等待时间). 但等待时间不好求,因此要 ...