Java 图形化界面设计(GUI)实战练习(代码),java开发面试笔试题


我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家。
扫描二维码或搜索下图红色VX号,加VX好友,拉你进【程序员面试学习交流群】免费领取。也欢迎各位一起在群里探讨技术。
推荐文章:Java 面试知识点解析Mysql优化技巧(数据库设计、命名规范、索引优化

关于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);

    }

}
扫描二维码关注公众号,回复: 6068852 查看本文章

代码实例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);

    }

}


转载:https://www.cnblogs.com/1693977889zz/p/8377461.html

推荐内容:
java主线程结束和子线程结束之间的关系
Java面试题总结-Day1
金三银四跳槽季,BAT美团滴滴java面试大纲(带答案版)之一:Java基础篇
java后台导出excel代码详细讲解
java 一次CPU占用过高问题的排查及解决
JAVA实现用户的权限管理
Java中简单Http请求
Java面试题—初级(2)
JAVA面试题(8)
Java面试集合(四)

猜你喜欢

转载自blog.csdn.net/agoodcoder777/article/details/89605777