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

关于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)实战练习(代码)

相关文章:

你感兴趣的文章:

标签云: