这里笔者写一些自己做GUI时候的心得,希望可以帮助需要学习的同学,函数的实现和界面设计不在同一个文件中,且涉及参数的传递

一、继承于JFrame

  当遇到继承于JFrame的类的时候,可以省去建立对象,直接使用组件

 setBounds(200, 200, 500, 400);
getContentPane().setBackground(Color.gray);
setVisible(true);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setTitle("MENU");
其中setBounds是设计窗口的大小,getContentPane是设计组件的,setdefault设计关闭类型这些内容在使用时可以
去查一下使用的手册,由于在构建程序的时候涉及到参数的传递,因此在传递时要注意参数的一一对应关系
在使用的时候Button按钮需要建立监听。其中还包括从键盘的监听
 setBounds(200, 200, 500, 400);
getContentPane().setBackground(Color.gray);
setVisible(true);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setTitle("MENU");

 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


												

Java的GUI设计的更多相关文章

  1. Java的GUI设计小技巧

    不可关闭窗口 setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);

  2. Java的GUI设计中如何跨界面传值

    在Java设计中我们会遇到登录界面的信息,在后面的某个情况也需要使用. 比如这是笔者的一个登录界面 可以看到获取密码和账号 在这个时候的功能的完成需要密码和账号 // 登录信息的获取 public S ...

  3. Java程序设计11——GUI设计与事件处理A

    1.GUI设计 Java使用AWT和Swing类完成图形用户界面编程,AWT全称是Abstract Window Toolkit,即抽象窗口工具集,它是Sun最早提供的GUI库,只是这个库功能比较有限 ...

  4. java.awt包提供了基本的java程序的GUI设计工具

    java.awt包提供了基本的java程序的GUI设计工具.主要包括下述三个概念: 组件--Component 容器--Container 布局管理器--LayoutManager package T ...

  5. 十. 图形界面(GUI)设计1.图形界面设计基础

    早先程序使用最简单的输入输出方式,用户在键盘输入数据,程序将信息输出在屏幕上.现代程序要求使用图形用户界面(Graphical User Interface,GUI),界面中有菜单.按钮等,用户通过鼠 ...

  6. Java并发指南12:深度解读 java 线程池设计思想及源码实现

    ​深度解读 java 线程池设计思想及源码实现 转自 https://javadoop.com/2017/09/05/java-thread-pool/hmsr=toutiao.io&utm_ ...

  7. 1.JAVA之GUI编程概述

          下列内容为本人看毕向东老师java视频教程学习笔记! JAVA GUI图形用户界面编程: Windows 操作系统提供两种操作方式:                             ...

  8. 2.JAVA之GUI编程布局

    布局管理器 容器中的组件排放方式,就是布局 常见的布局管理器: **************************************************** 1.FlowLayout(流式 ...

  9. 3.JAVA之GUI编程Frame窗口

    创建图形化界面思路: 1.创建frame窗体: 2.对窗体进行基本设置: 比如大小.位置.布局 3.定义组件: 4.将组件通过add方法添加到窗体中: 5.让窗体显示,通过setVisible(tur ...

随机推荐

  1. 一:怎样运行python程序

    运行python程序有三种方法: 1,在命令行运行python代码:C:/python27>python hello.py   [注:如果没有把PATH环境变量设置为包含这一路径,要确保输入到了 ...

  2. pta l2-14(列车调度)

    题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805063166312448 题意:给定n个数的重排列,求至少需 ...

  3. nohup top -p 22452 -b >>jiu.log &

    解释一下: 1. nohup \$order & 后台执行 2. nohup \$order >>$file & 后台执行,并输入指定文件 3. top -p $num 使 ...

  4. LightOJ - 1030 期望+dp

    题目链接:https://vjudge.net/problem/25907/origin 一个山洞,里面有有1到n个位置,每个位置都有一定的金币,你有一个六面的骰子,一开始你在1,每次摇到了哪个数就往 ...

  5. TOJ4439微积分――曲线积分(数学,模拟)

    传送门:点我 格林公式P,Q为关于x,y的函数. 现在为了方便起见,现给出x的积分上限1,积分下限0, y的积分上限x,积分下限0. P只是关于Y的函数,Q只是关于X的函数. 输入 开始输入为测试组数 ...

  6. 小程序循环多个picker选择器,实现动态增、减

    现象 循环picker选择器,改变一个下拉框选项,导致全部下拉框选项改变: 问题 怎样操作才能实现只改变当前操作的下拉框的值? 思路 在js中设置一个数组变量,存储每个picker选择器默认的值:然后 ...

  7. docker-ce-17.09 网络基础配置

    一.端口映射实现访问容器 1.我们先从pull一个nginx镜像,然后后台运行该镜像 > docker pull nginx > docker run -d -P nginx:latest ...

  8. python基础之socket编程 (转自林海峰老师)

    python基础之socket编程   阅读目录 一 客户端/服务器架构 二 osi七层 三 socket层 四 socket是什么 五 套接字发展史及分类 六 套接字工作流程 七 基于TCP的套接字 ...

  9. NuGet打包,IIS自动发布

    NuGet学习笔记(1)——初识NuGet及快速安装使用 https://kb.cnblogs.com/page/143190/ NuGet学习笔记(2)——使用图形化界面打包自己的类库 https: ...

  10. springboot项目maven报错 LoggerFactory is not a Logback LoggerContext but Logback is on the classpath. Either remove Logback

    完整信息如下 SLF4J: Class path contains multiple SLF4J bindings.SLF4J: Found binding in [jar:file:/D:/deve ...