关于Java图形化界面设计,基础知识网上可搜,下面简单介绍一下重点概念,然后就由浅入深代码实例。

程序是为了方便用户使用的,Java引入图形化界面编程。

1.JFrame 是容器类

2.AWT 是抽象窗口组件工具包,是 Java 最早的用于编写图形节目应用程序的开发包。

3.Swing 是为了解决 AWT 存在的问题而新开发的包,它以 AWT 为基础的。

代码实例1:

package com.zhouzhou;
//练习网格布局
import java.awt.*;
import javax.swing.*;public class Demo9 extends JFrame {// 定义组件int size = 9;JButton jbs[] = new JButton[size];public static void main(String[] args) {// 创建实例Demo9 de = new Demo9();}// 构造函数public Demo9() {// 创建组件for (int i = 0; i < size; i++) {jbs[i] = new JButton(String.valueOf(i));}// 设置网格布局,这里只有前两个参数(行/列)3和3 的话,网格没有空隙this.setLayout(new GridLayout(3, 3, 10, 10));// 添加组件for (int i = 0; i < size; i++) {this.add(jbs[i]);}// 设置窗体属性this.setTitle("网格布局案例");this.setSize(300, 400);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setLocation(200, 200);// 显示this.setVisible(true);}
}

代码实例2:

package com.zhouzhou;import java.awt.*;
import javax.swing.*;public class Demo10 extends JFrame {// 定义组件JPanel jp1, jp2;JButton jb1, jb2, jb3, jb4, jb5, jb6;public static void main(String[] args) {// TODO Auto-generated method stubDemo10 de = new Demo10();}// 构造函数public Demo10() {// 创建组件jp1 = new JPanel();jp2 = new JPanel();jb1 = new JButton("西瓜");jb2 = new JButton("苹果");jb3 = new JButton("荔枝");jb4 = new JButton("葡萄");jb5 = new JButton("桔子");jb6 = new JButton("香蕉");// 设置布局管理器,//JPanel布局默认是BorderLoyout// 添加JPanel//JPanel属于容器类组件,可以加入别的组件jp1.add(jb1);jp1.add(jb2);jp2.add(jb3);jp2.add(jb4);jp2.add(jb5);// 把jpanel 加入JFramethis.add(jp1, BorderLayout.NORTH);this.add(jb6, BorderLayout.CENTER);this.add(jp2, BorderLayout.SOUTH);this.setSize(300, 400);this.setLocation(200, 200);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);}
}

代码实例3:

package com.zhouzhou;import java.awt.*;import javax.swing.*;public class Demo11 extends JFrame {// 定义组件JPanel jp1, jp2, jp3;JLabel jlb1, jlb2;JButton jb1, jb2;JTextField jtf1;JPasswordField jpf1;public static void main(String[] args) {// TODO Auto-generated method stubDemo11 d1 = new Demo11();}// 构造函数public Demo11() {jp1 = new JPanel();jp2 = new JPanel();jp3 = new JPanel();jlb1 = new JLabel("用户名");jlb2 = new JLabel("密    码");jb1 = new JButton("登录");jb2 = new JButton("取消");jtf1 = new JTextField(10);jpf1 = new JPasswordField(10);// 设置布局管理(上面忘记:extends JFrame,这里出错了)this.setLayout(new GridLayout(3, 1));// 加入各个组件jp1.add(jlb1);jp1.add(jtf1);jp2.add(jlb2);jp2.add(jpf1);jp3.add(jb1);jp3.add(jb2);// 加入到JFramethis.add(jp1);this.add(jp2);this.add(jp3);this.setSize(250, 150);this.setTitle("登录");this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);}
}

代码实例4:

package com.zhouzhou;import java.awt.*;import javax.swing.*;public class Demo12 extends JFrame {// 定义组件JPanel jp1, jp2, jp3;JLabel jlb1, jlb2;JCheckBox jcb1, jcb2, jcb3;JRadioButton jrb1, jrb2;JButton jb1, jb2;// 单选设置ButtonGroup bg, bg2;public static void main(String[] args) {// TODO Auto-generated method stubDemo12 d2 = new Demo12();}// 构造函数public Demo12() {jp1 = new JPanel();jp2 = new JPanel();jp3 = new JPanel();jlb1 = new JLabel("你喜欢的运动");jlb2 = new JLabel("你的性别");jcb1 = new JCheckBox("足球");jcb2 = new JCheckBox("篮球");jcb3 = new JCheckBox("网球");// 下面可以设置单选// ButtonGroup bg2=new ButtonGroup();// bg2.add(jcb1);// bg2.add(jcb2);// bg2.add(jcb2);jrb1 = new JRadioButton("男");jrb2 = new JRadioButton("女");// 一定要把jrb1,jrb2放入到一个ButtonGroup里面ButtonGroup bg = new ButtonGroup();bg.add(jrb1);bg.add(jrb2);jb1 = new JButton("注册用户");jb2 = new JButton("取消用户");this.setLayout(new GridLayout(3, 1));jp1.add(jlb1);jp1.add(jcb1);jp1.add(jcb2);jp1.add(jcb3);jp2.add(jlb2);jp2.add(jrb1);jp2.add(jrb2);jp3.add(jb1);jp3.add(jb2);// 加入到JFramethis.add(jp1);this.add(jp2);this.add(jp3);this.setSize(300, 200);this.setTitle("用户注册界面");this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);}
}

代码实例5:

package com.zhouzhou;import java.awt.*;import javax.swing.*;public class Demo13 extends JFrame {// 定义组件JPanel jp1, jp2;JLabel jlb1, jlb2;JComboBox jcb1;JList jl1;JScrollPane jsp;public static void main(String[] args) {// TODO Auto-generated method stubDemo13 d3 = new Demo13();}public Demo13() {jp1 = new JPanel();jp2 = new JPanel();jlb1 = new JLabel("您的籍贯是");jlb2 = new JLabel("您喜欢旅游的地区");String[] jg = { "北京", "上海", "天津", "重庆", "江苏" };jcb1 = new JComboBox(jg);String[] jg2 = { "故宫", "长城", "九寨沟", "天安门", "火星" };jl1 = new JList(jg2);// 设置你希望显示多少个选项jl1.setVisibleRowCount(1);jsp = new JScrollPane(jl1);// 布局管理this.setLayout(new GridLayout(3, 1));// 添加组件jp1.add(jlb1);jp1.add(jcb1);jp2.add(jlb2);jp2.add(jsp);this.add(jp1);this.add(jp2);this.setSize(300, 400);this.setTitle("下拉框练习");this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);}}

代码实例6:

package com.zhouzhou;import java.awt.*;
import javax.swing.*;public class Demo14 extends JFrame {// 定义组件JSplitPane jsp;JList jList;JLabel jl1;public static void main(String[] args) {// TODO Auto-generated method stubDemo14 d4 = new Demo14();}public Demo14() {// 创建组件String[] words = { "boy", "gril", "bird", "box" };jList = new JList(words);// JLabel可以放置图片jl1 = new JLabel(new ImageIcon("images/1.jpeg"));// 拆分窗格jsp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, jList, jl1);// 可以手动伸缩变化jsp.setOneTouchExpandable(true);// 设置布局管理器,它本身就是borderLayout布局,就不用再设置了// 添加组件this.add(jsp);this.setSize(400, 300);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);}
}

代码实例7:

package com.zhouzhou;import java.awt.*;import javax.swing.*;public class Demo15 extends JFrame {// 定义组件JTextArea jta = null;// 多行文本框JScrollPane jsp = null;JPanel jp1 = null;// 面板JComboBox jcb = null;// 下拉框组件JTextField jtf = null;// 文本框JButton jb = null;public static void main(String[] args) {// TODO Auto-generated method stubDemo15 d5 = new Demo15();}// 构造函数public Demo15() {// 多行文本框会根据情况自己调节大小jta = new JTextArea();jsp = new JScrollPane(jta);jp1 = new JPanel();String j2[] = { "北京", "商行", "农行", "师大", "附中", "哈尔滨" };jcb = new JComboBox(j2);// 文本框最好设置初值jtf = new JTextField(10);jb = new JButton("发送");// 布局管理// this.setLayout(new GridLayout(1, 1));// 添加jp1.add(jcb);jp1.add(jtf);jp1.add(jb);// 多行文本框是放在这里(JFrame)的!!!// 因为上面又添加可以滚动的功能,这里传入jsp,而不是jtathis.add(jsp);// 下面这里就需要定位处理this.add(jp1, BorderLayout.SOUTH);// 设置窗体属性,z这里很厉害!!this.setIconImage((new ImageIcon("images\\3.jpg")).getImage());this.setSize(300, 200);this.setTitle("QQ登录");this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);}
}

代码实例8:

package com.zhouzhou;//QQ登录界面制作
import java.awt.*;
import javax.swing.*;public class Demo16 extends JFrame {// 北部区域JLabel jl1;// 南部区域JButton jb1, jb2, jb3;JPanel jp1;// 中部区域JTabbedPane jtp;// 选项卡窗格JPanel jp2, jp3, jp4;JLabel jl2, jl3, jl4, jl5;// 号码输入文本框JTextField jtf;// 密码JPasswordField jpf;// 清除号码JButton jb4;// 隐身登录、记住密码JCheckBox jcb1, jcb2;public static void main(String[] args) {// TODO Auto-generated method stubnew Demo16();}public Demo16() {// 创建组件jl2 = new JLabel("QQ号码", JLabel.CENTER);jl3 = new JLabel("QQ密码", JLabel.CENTER);jl4 = new JLabel("忘记密码", JLabel.CENTER);jl4.setFont(new Font("宋体", Font.PLAIN, 16));// 设置字体样式jl4.setForeground(Color.BLUE);// 设置字体颜色jl5 = new JLabel("<html><a href='www.qq.com'>申请密码保护</a></html>");// 鼠标触发变化jl5.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));jtf = new JTextField();jpf = new JPasswordField();jb4 = new JButton(new ImageIcon("images\\login.png"));jcb1 = new JCheckBox("隐身登录");jcb2 = new JCheckBox("记住密码");// 北部区域jl1 = new JLabel(new ImageIcon("images\\headpicture.jpg"));// 南部区域jp1 = new JPanel();jb1 = new JButton(new ImageIcon("images\\login.png"));jb2 = new JButton(new ImageIcon("images\\delete.png"));jb3 = new JButton(new ImageIcon("images\\register.png"));// 中部区域jtp = new JTabbedPane();jp2 = new JPanel();jp3 = new JPanel();jp3.setBackground(Color.RED);// 给面板设置背景jp4 = new JPanel();jp4.setBackground(new Color(0, 0, 255));// 将面板添加到选项卡窗格上jtp.add("QQ号码", jp2);// 参数:选项卡名称,面板jtp.add("手机号码", jp3);jtp.add("电子邮箱", jp4);// 设置布局jp2.setLayout(new GridLayout(3, 3));// 添加组件jp1.add(jb1);jp1.add(jb2);jp1.add(jb3);jp2.add(jl2);jp2.add(jtf);jp2.add(jb4);jp2.add(jl3);jp2.add(jpf);jp2.add(jl4);jp2.add(jcb1);jp2.add(jcb2);jp2.add(jl5);this.add(jp1, BorderLayout.SOUTH);this.add(jl1, BorderLayout.NORTH);this.add(jtp, BorderLayout.CENTER);// 展示组件ImageIcon icon = new ImageIcon("images\\qq.png");this.setIconImage(icon.getImage());// 给窗体设置图标方法this.setSize(400, 380);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);}
}

代码实例9:

按 Ctrl+C 复制代码

按 Ctrl+C 复制代码

原大神代码地址:https://www.cnblogs.com/1693977889zz/p/8377461.html

Java 图形化界面设计(GUI)实战练习(代码)相关推荐

  1. java 网格布局管理器,Java图形化界面设计——布局管理器之GridLayout(网格布局)...

    网格布局特点: l  使容器中的各组件呈M行×N列的网格状分布. l  网格每列宽度相同,等于容器的宽度除以网格的列数. l  网格每行高度相同,等于容器的高度除以网格的行数. l  各组件的排列方式 ...

  2. Java图形化界面设计——容器(JFrame)

    Java图形化界面设计--容器(JFrame) 程序是为了方便用户使用的,因此实现图形化界面的程序编写是所有编程语言发展的必然趋势,在命令提示符下运行的程序可以让我们了解java程序的基本知识体系结构 ...

  3. java图形化界面(GUI)

    java图形化界面(GUI) 一.AWT编程(抽象窗口工具集) 1.AWT继承体系 2.Container容器 2.1 Container继承体系 2.2 常见API 2.3 容器演示 2.3.1 w ...

  4. Java图形化界面设计——GridBagConstraints

    JAVA布局模式:GridBagConstraints终极技巧参数详解 布局模式 :GridBagConstraints布局,先发一个实例: gridx = 2; // X2 gridy = 0; / ...

  5. java卡片布局显示效果_三十二、Java图形化界面设计——布局管理器之CardLayout(卡片布局)...

    摘自 http://blog.csdn.net/liujun13579/article/details/7773945 卡片布局能够让多个组件共享同一个显示空间,共享空间的组件之间的关系就像一叠牌,组 ...

  6. 三十、Java图形化界面设计——布局管理器之BorderLayout(边界布局)

    边界布局管理器把容器的的布局分为五个位置:CENTER.EAST.WEST.NORTH.SOUTH.依次对应为:上北(NORTH).下南(SOUTH).左西(WEST).右东(EAST),中(CENT ...

  7. 三十三、Java图形化界面设计——布局管理器之null布局(空布局)

    一般容器都有默认布局方式,但是有时候需要精确指定各个组建的大小和位置,就需要用到空布局. 操作方法: 1)       首先利用setLayout(null)语句将容器的布局设置为null布局(空布局 ...

  8. Java图形化界面设计——添加图片

    1.使用JLabel组件来显示图片 JLabel 的构造方法: JLabel()JLabel(String text) JLabel(String text, int horizontalAlignm ...

  9. Java图形化界面设计(swing实现)

最新文章

  1. 四种launchMode
  2. 【Paper】2015_El H_Decentralized Control Architecture for UAV-UGV Cooperation
  3. Vue第二章,在项目中使用element-ui组件
  4. python读取excel生成mysql建表语句_python读取excel文件并自动在mysql中建表导数据
  5. linux命令大全rename,Linux常用命令汇总--rename
  6. 多线程学习(二)----AfxBeginThread
  7. 淘淘商城之技术选型、开发工具和环境、人员配置
  8. 终端定时任务 开始缓冲_如何开始使用终端以提高生产力
  9. 再谈全局网HBase八大应用场景
  10. Mr.J--学习五子棋的艰苦之路
  11. Java thread.join
  12. pip安装mysql-python模块报错:cannot find -lmysqlclient_r
  13. pycharm 快捷使用
  14. tcp总结与简单实现
  15. iOS开发中runtime介绍
  16. 网络安全基础——用户与组管理
  17. linux 文本编辑器Vim/Vi详细介绍
  18. 当里皮也成过客,请善待国足主帅的继任者
  19. 【AI学习笔记】退出 Anaconda 虚拟环境时 遇到的两种报错。
  20. 没有良好数学基础,应该怎样学习人工智能?

热门文章

  1. 用html5写一段文字画布中,超全的HTML5画布(Canvas)实例
  2. usmile即将上市,小米、海尔争相发力,国产电动牙刷春天来了?
  3. linux的系统性能监控
  4. 天津天地伟业程序员怎么样_校园安全再添“利器”,天地伟业“一键式报警”系统落户天津高校...
  5. 二十八、安全的用网行为
  6. java 防止恶意刷短信验证码_用户使用java短信验证码时要做好三个保护
  7. 【测试框架】除了Selenium你还知道啥?
  8. 基础IO-文件IO操作
  9. Linux 过滤文件中的乱码
  10. Linux系统下Python3的安装