Java-Java基础04之使用Swing编写词霸、qq聊天器及记事本界面

项目文件结构
项目文件结构

主要内容有:使用Java swing的布局,如BorderLayout、流式布局、宫格布局以及布局管理器,Java swing编写自定面板、复选框、单选框、列表组件、滚动组件、词霸小应用、qq聊天器、qq登录界面、记事本界面。

布局管理器

布局管理器Demo8_1.java

package com.test1;
import javax.swing.JButton;
import javax.swing.JFrame;
public class Demo8_1 extends JFrame         //继承JFrame
{
    /**
     * @param args
     */
    public static void main(String[] args)
    {
        Demo8_1 demo8_1=new Demo8_1();
    }
    //把需要的组件定义在这里
    JButton jb1=null;         //定义一个按钮
        //构造函数
    public Demo8_1()
    {
        ////JFrame是一个顶层容器类(可以添加其它swing组件的类)
        //JFrame jf=new JFrame();
        //给窗体设置标题
        this.setTitle("Hello world");
        //设置大小,按像素
        this.setSize(200, 200);
        //设置初始位置
        this.setLocation(100,200);
        //创建一个按钮
        jb1=new JButton("我是一个按钮!");
        //添加JButton组件
        this.add(jb1);
        //设置当关闭窗口时,保证JVM也退出
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //显示
        this.setVisible(true);
    }
}

常用组件常Demo8_2.java

/*
* BorderLayout演示
* 1.继承JFrame
* 2.定义组件
* 3.创建组件(构造函数)
* 4.添加组件
* 5.对窗体设置
* 6.显示窗体
*/
package com.test1;
import java.awt.*;
import javax.swing.*;
public class Demo8_2 extends JFrame{
    /**
     * @param args
     */
        //定义组件
    JButton jb1,jb2,jb3,jb4,jb5;
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Demo8_2 demo8_2=new Demo8_2();
    }
    public Demo8_2()
    {
        //创建组件
        jb1=new JButton("中部");
        jb2=new JButton("北部");
        jb3=new JButton("南部");
        jb4=new JButton("东部");
        jb5=new JButton("西部");
        //添加各个组件
        this.add(jb1,BorderLayout.CENTER);
        this.add(jb2,BorderLayout.NORTH);
        this.add(jb3,BorderLayout.SOUTH);
        this.add(jb4,BorderLayout.EAST);
        this.add(jb5,BorderLayout.WEST);
        //设置窗体属性
        this.setTitle("边界布局的案例");
        this.setSize(300,200);
        this.setLocation(200,200);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //显示窗体
        this.setVisible(true);
    }
}

Demo8_3.java

/*
* 功能:流式:流式布局案例
*/
package com.test1;
import java.awt.*;
import javax.swing.*;
public class Demo8_3 extends JFrame{
    /**
     * @param args
     */
        //定义需要的组件
    JButton jb1,jb2,jb3,jb4,jb5,jb6;
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Demo8_3 demo8_3 =new Demo8_3();
    }
        //构造函数
    public Demo8_3()
    {
        //创建组件
        jb1=new JButton("关羽");
        jb1.setSize(100, 100);
        jb2=new JButton("张飞");
        jb3=new JButton("赵云");
        jb4=new JButton("马超");
        jb5=new JButton("黄忠");
        jb6=new JButton("魏延");
        //添加组件
        this.add(jb1);
        this.add(jb2);
        this.add(jb3);
        this.add(jb4);
        this.add(jb5);
        this.add(jb6);
        //设置布局管理器
        this.setLayout(new FlowLayout(FlowLayout.LEFT));
        //设置窗体属性
        this.setTitle("流式布局案例");
        this.setSize(350,200);
        this.setLocation(200,200);
        //禁止用户改变窗体大小
        this.setResizable(false);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //显示
        this.setVisible(true);
    }
}

swing编程实战Demo8_4.java

/*
* 风格布局
*/
package com.test1;
import java.awt.*;
import javax.swing.*;
public class Demo8_4 extends JFrame{
    int size=9;
        //定义组件
    JButton jbs[]=new JButton[size];
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        //创建实例
        Demo8_4 demo8_4=new Demo8_4();
    }
        //构造函数
    public Demo8_4()
    {
        //创建组件
        for(int i=0;i<size;i++)
        {
            jbs[i]=new JButton(String.valueOf(i));
        }
        //设置风格布局
        this.setLayout(new GridLayout(3,3,10,10));
        //第1个参数是风格的行数,第2个参数是风格的列数
        //添加组件
        for(int i=0;i<size;i++)
        {
            this.add(jbs[i]);
        }
        //设置窗体属性
        this.setTitle("风格布局案例");
        this.setSize(300,200);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setLocation(200,200);
        //显示
        this.setVisible(true);
    }
}

Demo8_5.java

/*
* 多种布局管理器的使用
*/
package com.test1;
import java.awt.*;
import javax.swing.*;
public class Demo8_5 extends JFrame {
    //定义组件
    JPanel jp1,jp2;
    JButton jb1,jb2,jb3,jb4,jb5,jb6;
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Demo8_5 demo8_5=new Demo8_5();
    }
    //构造函数
    public Demo8_5()
    {
        //创建组件
        //JPanel布局默认是FlowLayout
        jp1=new JPanel();
        jp2=new JPanel();
        jb1=new JButton("西瓜");
        jb2=new JButton("苹果");
        jb3=new JButton("荔枝");
        jb4=new JButton("葡萄");
        jb5=new JButton("桔子");
        jb6=new JButton("香蕉");
        //设置布局
        //添加
        jp1.add(jb1);
        jp1.add(jb2);
        jp2.add(jb3);
        jp2.add(jb4);
        jp2.add(jb5);
        //把Panel加入JFrame
        this.add(jp1,BorderLayout.NORTH);
        this.add(jb6,BorderLayout.CENTER);
        this.add(jp2,BorderLayout.SOUTH);
        this.setSize(300,150);
        this.setLocation(200,200);
        this.setVisible(true);
    }
}

Demo8_6.java

package com.test1;
import java.awt.*;
import javax.swing.*;
public class Demo8_6 extends JFrame{
    /**
     * @param args
     */
        //定义组件
    JPanel jp1,jp2,jp3;         //三个子面板
    JLabel jlb1,jlb2;         //标签
    JButton jb1,jb2;         //两个按钮
    JTextField jtf1,jpf1;         //两个文本输入框
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Demo8_6 demo8_6=new Demo8_6();
    }
        //构造函数
    public Demo8_6()
    {
        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);         //密码文本框
        //设置布局管理
        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.setTitle("会员管理系统");
        this.setSize(250,130);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
    }
}

Demo8_7.java

/*
* 复选框或单选框的案例
*/
package com.test1;
import java.awt.*;
import javax.swing.*;
public class Demo8_7 extends JFrame{
    //定义
    JPanel jp1,jp2,jp3;
    JLabel jl1,jl2;
    JButton jb1,jb2;
    JCheckBox jcb1,jcb2,jcb3;
    JRadioButton jrb1,jrb2;
    ButtonGroup bg;
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Demo8_7 dmeo8_7=new Demo8_7();
    }
    //构造函数
    public Demo8_7()
    {
        //创建组件
        jp1=new JPanel();
        jp2=new JPanel();
        jp3=new JPanel();
        jl1=new JLabel("你喜欢的运动:");
        jl2=new JLabel("你的性别:");
        jb1=new JButton("注册用户");
        jb2=new JButton("取消注册");
        jcb1=new JCheckBox("足球");
        jcb2=new JCheckBox("篮球");
        jcb3=new JCheckBox("网球");
        jrb1=new JRadioButton("男");
        jrb2=new JRadioButton("女");
        //一定要把jrb1,jrb2放入到一个ButtonGroup
        ButtonGroup bg=new ButtonGroup();
        bg.add(jrb1);
        bg.add(jrb2);
        //设置布局管理器
        this.setLayout(new GridLayout(3,1));
        //添加组件
        jp1.add(jl1);
        jp1.add(jcb1);
        jp1.add(jcb2);
        jp1.add(jcb3);
        jp2.add(jl2);
        jp2.add(jrb1);
        jp2.add(jrb2);
        jp3.add(jb1);
        jp3.add(jb2);
        this.add(jp1);
        this.add(jp2);
        this.add(jp3);
        this.setSize(300,150);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
    }
}

Demo8_8.java

/*
* JCombobox/JList/JScrollPane
*/
package com.test1;
import java.awt.*;
import javax.swing.*;
public class Demo8_8 extends JFrame {
        //定义
    JPanel jp1,jp2;
    JLabel jl1,jl2;
    JComboBox jcb1;
    JList jlist;
    JScrollPane jsp;
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Demo8_8 demo8_8=new Demo8_8();
    }
        //构造函数
    public Demo8_8()
    {
        jp1=new JPanel();
        jp2=new JPanel();
        jl1=new JLabel("你的籍贯:");
        jl2=new JLabel("旅游地点:");
        String []jg={"北京","上海","天津","火星"};
        jcb1=new JComboBox(jg);
        String []dd={"九寨沟","故宫","长城","天安门"};
        jlist=new JList(dd);
        jlist.setVisibleRowCount(2);        //设置你希望显示多少个选项
        jsp=new JScrollPane(jlist);
        //设置布局
        this.setLayout(new GridLayout(3,1));
        //添加组件
        jp1.add(jl1);         //加到面板1当中
        jp1.add(jcb1);
        jp2.add(jl2);         //加到面板2当中
        jp2.add(jsp);
        this.add(jp1);         //把面板加入到窗体当中
        this.add(jp2);
        //设置窗体属性
        this.setSize(200,180);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
    }
}

Demo8_9.java

/*
* 词霸
*/
package com.test1;
import java.awt.*;
import javax.swing.*;
public class Demo8_9 extends JFrame{
        //定义组件
    JSplitPane jsp;
    JList jList;
    JLabel jl1;
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Demo8_9 demo8_9=new Demo8_9();
    }
    public Demo8_9()
    {
        //创建组件
        String []words={"迈克尔-杰克逊","中国","导游"};
        jList=new JList(words);
        jl1=new JLabel(new ImageIcon("images/迈克尔-杰克逊2.jpg"));
        //拆分窗格
        jsp=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,jList,jl1);
        //设置窗格可以伸缩
        jsp.setOneTouchExpandable(true);
        //设置布局管理器
        //添加组件
        this.add(jsp);
        //设置大小
        this.setSize(550,632);
        this.setLocation(200,200);
        this.setVisible(true);
    }
}

Demo8_10.java

/*
* qq聊天器
*/
package com.test1;
import java.awt.*;
import javax.swing.*;
public class Demo8_10 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
        Demo8_10 demo8_10=new Demo8_10();
    }
        //构造
    public Demo8_10()
    {
        jta=new JTextArea();
        jsp=new JScrollPane(jta);         //为文本域添加滚动条
        jp1=new JPanel();
        String []chatter={"布什","拉登"};
        jcb=new JComboBox(chatter);
        jtf=new JTextField(10);
        jb=new JButton("发送");
        //设置布局
        //添加组件
        jp1.add(jcb);
        jp1.add(jtf);
        jp1.add(jb);
        //加入JFrame
        this.add(jsp);
        this.add(jp1,BorderLayout.SOUTH);
        //设置窗体属性
        this.setSize(300,200);
        this.setIconImage((new ImageIcon("images\\rowin2.gif")).getImage());
        this.setTitle("简单QQ");
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
    }
}

Demo8_11.java

/*
* qq登录界面制作
*/
package com.test1;
import java.awt.*;
import javax.swing.*;
public class Demo8_11 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;
    //清除号码button
    JButton jb4;
    //隐身登录,记住密码
    JCheckBox jcb1,jcb2;
    public Demo8_11()
    {
        //创建组件
        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\\清除号码.jpg"));
        //复选框
        jcb1=new JCheckBox("隐身登录");
        jcb2=new JCheckBox("记住密码");
        //北部区域
        jl1=new JLabel(new ImageIcon("images\\老虎.jpg"));
        //南部区域
        jp1=new JPanel();
        jb1=new JButton(new ImageIcon("images\\登录.gif"));
        jb2=new JButton(new ImageIcon("images\\取消.gif"));
        jb3=new JButton(new ImageIcon("images\\向导.gif"));
        //中部区域
        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);        //QQ号码
        jp2.add(jtf);        //号码框
        jp2.add(jb4);        //清除号码按钮
        jp2.add(jl3);        //密码
        jp2.add(jpf);        //密码框
        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\\rowin.gif");
        this.setIconImage(icon.getImage());
        this.setSize(350,240);
        this.setLocation(300,400);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
    }
    public static void main(String[] args) {
        new Demo8_11();
    }
}

Demo8_12.java

/*
* 记事本界面
*/
package com.test1;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Demo8_12 extends JFrame{
    JMenuBar jmb;        //菜单条组件
    JMenu menu1,menu2,menu3,menu4,menu5;
    JMenuItem item2,item3,item4,item5,item6,item7;
    JMenu xinjian;        //二级菜单
    JMenuItem file,project;
    JTextArea jta;         //文本输入区域
        //工具条
    JToolBar jtb;
    JButton jb1,jb2,jb3,jb4,jb5,jb6;
    public Demo8_12()
    {
        //创建组件
        jtb=new JToolBar();
        jb1=new JButton(new ImageIcon("images\\new.jpg"));
        jb1.setToolTipText("新建");        //设置提示信息
        jb2=new JButton(new ImageIcon("images\\open.jpg"));
        jb2.setToolTipText("打开");
        jb3=new JButton(new ImageIcon("images\\save.jpg"));
        jb4=new JButton(new ImageIcon("images\\copy.jpg"));
        jb5=new JButton(new ImageIcon("images\\cut.jpg"));
        jb6=new JButton(new ImageIcon("images\\paste.jpg"));
        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("new.gif"));
        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);
        menu2.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_AS_NEEDED);
        this.add(jsp);
        //展现
        this.setTitle("记事本");
        ImageIcon icon=new ImageIcon("images\\rowin.gif");
        this.setIconImage(icon.getImage());        //设置窗体图标
        this.setSize(500,400);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
    }
    public static void main(String[] args) {
        Demo8_12 demo8_12=new Demo8_12();
    }
}

版权所有,转载请注明出处 luowei.github.io.