首页 > > 程序设计 > Java技术 >

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

2018-06-18 03:38:28来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

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

    }

}

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: Java进阶篇(四)——Java异常处理

下一篇: 2018年网易Java笔试题

IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设

网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源

网站联盟: 联盟新闻 联盟介绍 联盟点评 网赚技巧

行业资讯: 搜索引擎 网络游戏 电子商务 广告传媒

网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它

服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护

软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷

网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash

程序设计: Java技术 C/C++ VB delphi

网络知识: 网络协议 网络安全 网络管理 组网方案 Cisco技术

操作系统: Win2000 WinXP Win2003 Mac OS Linux FreeBSD

热门词条
最新资讯
  • Photoshop绘制立体风格的微笑表情
  • PS文字特效教程:制作公路上个性的涂鸦
  • Photoshop设计卷边效果的变形金刚电影
  • PS色彩修复教程:利用色阶工具快速给红
  • PS半透明物体抠图:利用通道选区工具抠
  • PS海报设计技巧教程:学习制作个性的扭
  • PS图片特效制作教程:学习给铁塔图片制
  • 学习用photoshop把浑浊的海水照片后期
  • PS古风照片教程:给古风美女打造出女侠
  • PS个性人物海报制作:设计创意时尚的玻
热门关注
  • 什么软件可以盗取微信号密码,怎么盗别
  • 磁力搜索网站导航2020年更新
  • springcloud学习之路: (一) 最简单的搭
  • 创建Gradle工程出现Could not install
  • 彻底弄懂“PKIX path building failed
  • Tomcat启动报错:org.apache.catalina.L
  • spring boot 错误:Check your ViewRes
  • 基于HttpClient的新版正方教务系统模拟
  • 只有程序员才能看懂的车牌,懂得自然懂
  • mybatis 注解@Results、@Result、@Resu
热门标签

聚圣源公司名称起名起名字的原则非常突然小孩子起名软件商业楼起名梦见黄鼠狼3c地图下载性之剧毒在线观看农历九月十九女孩起名徐州宝宝起名格林小镇实木家具生辰八字起名男孩乱明天下一根钉给宝宝起名大全姓罗霍元甲郑伊健仙帝归来云青岩最新章节给新生的女孩起名属鼠孩子起名字禁忌魁拔4之梅零落锦灰堆西安哪里有起名字的地方丝印公司起名开公司起名字书包公司起名嘉遇起名字的寓意赤焰战场3家小餐馆起名名字吧起名网网ftv.com我给台风起名字淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费

聚圣源 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化