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();
}
}