关于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 stub
Demo10 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 加入JFrame
this.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 stub
Demo11 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); // 加入到JFrame
this.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 stub
Demo12 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); // 加入到JFrame
this.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 stub
Demo13 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 stub
Demo14 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 stub
Demo15 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,而不是jta
this.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 stub
new 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:

package com.zhouzhou;

//记事本界面
import java.awt.*;
import javax.swing.*; import java.awt.event.*; public class Demo17 extends JFrame { // 工具条
JToolBar jtb;
JButton jb1, jb2, jb3, jb4, jb5, jb6; // 菜单条组件
JMenuBar jmb;
JMenu menu1, menu2, menu3, menu4, menu5;
JMenuItem item2, item3, item4, item5, item6, item7;
JMenu xinjian;// 二级菜单
JMenuItem file, project; JTextArea jta; public static void main(String[] args) {
// TODO Auto-generated method stub
new Demo17(); } public Demo17() { // 创建工具条
jtb = new JToolBar();
jb1 = new JButton(new ImageIcon("images\\11.png"));
jb1.setToolTipText("新建");
jb2 = new JButton(new ImageIcon("images\\22.png"));
jb2.setToolTipText("打开");
jb3 = new JButton(new ImageIcon("images\\33.png"));
jb3.setToolTipText("等待");
jb4 = new JButton(new ImageIcon("images\\44.png"));
jb4.setToolTipText("统计");
jb5 = new JButton(new ImageIcon("images\\55.png"));
jb5.setToolTipText("参与");
jb6 = new JButton(new ImageIcon("images\\66.png"));
jb6.setToolTipText("旁观"); jmb = new JMenuBar(); menu1 = new JMenu("文件(F)");
menu1.setMnemonic('F');// 设置助记符
menu2 = new JMenu("编辑(E)");
menu2.setMnemonic('E');
menu3 = new JMenu("格式(O)");
menu3.setMnemonic('O');
menu4 = new JMenu("查看(V)");
menu4.setMnemonic('V');
menu5 = new JMenu("帮助(H)");
menu5.setMnemonic('H'); // item1=new JMenuItem(“新建”)
xinjian = new JMenu("新建");
file = new JMenuItem("文件");
project = new JMenuItem("工程"); item2 = new JMenuItem("打开", new ImageIcon("images\\77.png"));
item3 = new JMenuItem("保存(S)");
item3.setMnemonic('S');
// 给菜单选项添加快捷方式
item3.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,
InputEvent.ALT_MASK));
item4 = new JMenuItem("另存为");
item5 = new JMenuItem("页面设置");
item6 = new JMenuItem("打印");
item7 = new JMenuItem("退出"); jta = new JTextArea(); // 设置布局 // 添加组件
// 将按钮添加到工具条上
jtb.add(jb1);
jtb.add(jb2);
jtb.add(jb3);
jtb.add(jb4);
jtb.add(jb5);
jtb.add(jb6); // 将菜单添加到菜单栏上
xinjian.add(file);
xinjian.add(project); menu1.add(xinjian);
menu1.add(item2);
menu1.add(item3);
menu1.add(item4);
menu1.addSeparator();// 添加分割线
menu1.add(item5);
menu1.add(item6);
menu1.addSeparator();
menu1.add(item7); // 将菜单添加到菜单条上
jmb.add(menu1);
jmb.add(menu2);
jmb.add(menu3);
jmb.add(menu4);
jmb.add(menu5); // 将菜单添加到窗体上
this.setJMenuBar(jmb); // 将工具条添加到窗体
this.add(jtb, BorderLayout.NORTH); JScrollPane jsp = new JScrollPane(jta);
jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
this.add(jsp); // 展示
this.setTitle("记事本");
ImageIcon icon = new ImageIcon("images\\jsb.png");
this.setIconImage(icon.getImage());
this.setSize(1200, 900);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true); } }

Java 图形化界面设计(GUI)实战练习(代码)的更多相关文章

  1. 转:二十七、Java图形化界面设计——容器(JFrame)

    转:http://blog.csdn.net/liujun13579/article/details/7756729 二十七.Java图形化界面设计——容器(JFrame) 程序是为了方便用户使用的, ...

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

    摘自http://blog.csdn.net/liujun13579/article/details/7756729 二十七.Java图形化界面设计--容器(JFrame) 程序是为了方便用户使用的, ...

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

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

  4. 三十二、Java图形化界面设计——布局管理器之CardLayout(卡片布局)

    摘自 http://blog.csdn.net/liujun13579/article/details/7773945 三十二.Java图形化界面设计--布局管理器之CardLayout(卡片布局) ...

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

    摘自http://blog.csdn.net/liujun13579/article/details/7774267 三十三.Java图形化界面设计--布局管理器之null布局(空布局) 一般容器都有 ...

  6. 三十一、Java图形化界面设计——布局管理器之GridLayout(网格布局)

    摘自http://blog.csdn.net/liujun13579/article/details/7772491 三十一.Java图形化界面设计--布局管理器之GridLayout(网格布局) 网 ...

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

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

  8. Java图形化界面设计——中间容器(Jpanel)

    1.  将组件添加到JFrame中 方式之一: frame.getContentPane().add(childComponent) 用getContentPane()方法获得JFrame的内容面板, ...

  9. 02 Java图形化界面设计——中间容器(Jpanel)

    上一篇讲解了Jframe顶层容器,例子中生成了一个空的窗体,在实际编程过程中,一般很少将文本框.按钮等组件直接放在顶层容器中进行布局,大多数时候是通过布局管理器结合中间容器对组件进行布局设置. 1.  ...

随机推荐

  1. LwIP协议栈接口

    协议栈api函数 1.netconn_new      //UDP    TCP struct netconn*netconn_new(enum netconn_type t) 为新连接申请一个连接结 ...

  2. ZOJ 3229 Shoot the Bullet (有源有汇有上下界最大流)

    题意:一个人要给女孩子们拍照,一共 n 天,m 个女孩子,每天他至多拍 d[i] 张照片,每个女孩子总共要被至少拍 g[i] 次.在第 i 天,可以拍 c[i] 个女孩子,c[i] 个女孩子中每个女孩 ...

  3. 抓取任务管理器信息实时上传到中国移动onenet平台

    这个和上次做的那个电脑信息上传工具采用了不同的思路 算殊途同归吧

  4. Do More With These Great Plugins for Windows Live Writer(old)

    This article is out of day,now we use open live wirter, but we don’t have so much works great plugin ...

  5. Django Model 进阶

    回顾: 定义 models settings.py激活app才能使用models migrations:版本控制,当更改库表结构时可以处理数据 增删改查 常见Field 模型的价值在于定义数据模型,使 ...

  6. 一道面试题(C语言)

    题:输入一个数,列出所有加和等于该数的式子. 分析: 以 6 为例: 从上面的分析就比较容易找到规律了. C语言代码: #include <stdio.h> int main() { in ...

  7. 第二十二节:Java语言基础-详细讲解位运算符与流程控制语句

    位运算符(二进制位运算) 运算符 运算 例子 << 左移 3 << 2 = 12 --> 3 * 2 * 2 =12 >> 右移 3 >> 1 = ...

  8. PHP字母数字验证码和中文验证码

    1:字母数字组合的验证码 HTML代码: 验证码:<input type="text" name="code"> <img onclick=& ...

  9. HoloLens开发手记 - 使用配件 Working with accessories

    HoloLens提供了通过蓝牙使用配件的能力.使用附件两种常见情况是用来点击手势和虚拟键盘.对本文来讲,两个最常见的配件就是HoloLens Clicker(点击器)和蓝牙键盘.HoloLens包含了 ...

  10. iOS-关于缓存【SDImageCache】Image,一直刷新UIImageView内存一直增加问题

    最近做的一个项目,里面有这样一个需求,在一个页面,用一个UIImageView不停的刷新显示图片,图片可能会重复显示:图片是从服务器下载下来的data流,data转UIimage系统的方法: UIIm ...