本文将介绍Swing中的一些常用组件,包括面板、按钮组件、列表组件、文本组件。
下来我们先来看一个实例,这是一个可输入用户名和密码的对话框,如图所示:
我们可以将这个对话框分为三个部分,即三个面板,JPanel 1、JPanel 2、JPanel 3。
JPanel 1 由标签JLabel“用户名”和文本框JTextField组成。
JPanel 2 由标签JLabel“密码”和密码框JPasswordField组成。
JPanel 3 由两个按钮JButton“登录”和“取消”组成。
编写一个界面的思路如下:
1、定义组件
2、创建组件
3、添加组件
4、把面板添加到JFrame
5、设置窗体大小
6、设置窗体可见
代码如下:
/*
* 第31讲 常用组件
*/
package com.test1;
import java.awt.*;
import javax.swing.*;
public class Demo8_6 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
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.setSize(300,150);//设置窗体大小
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//点击关闭时的操作
this.setVisible(true);//设置为可见
}
}
下面我们再介绍一个实例,它是一个包括了单选框和复选框的对话框,效果如图所示:
同理,我们也可以将这个对话框分为三个部分,第一部分为JPanel 1,它由JLabel“你喜欢的运动”和复选框JCheckBox组成。
第二部分为JPanel 2,它由JLabel“你的性别”和单选框JRadioButton组成。一定要把jrb1,jrb2放入到一个ButtonGroup中
第三部分为JPanel 3,它由两个单选按钮“注册用户”和“取消注册”组成。
代码如下:
/*
* 复选框和单选框案例
* 第31讲 常用组件
* */
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 demo8_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));
//添加组件
//把三个复选框按钮加入到面板1,把标签加入到面板1
jp1.add(jl1);
jp1.add(jcb1);
jp1.add(jcb2);
jp1.add(jcb3);
//把标签2和单选框加入到面板2
jp2.add(jl2);
jp2.add(jrb1);
jp2.add(jrb2);
//把两个按钮加入到面板3
jp3.add(jb1);
jp3.add(jb2);
//把三个面板加入到JFrame中
this.add(jp1);
this.add(jp2);
this.add(jp3);
this.setSize(300, 150);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
这个对话框我们可以分为两个部分,JPanel 1为下拉列表框JComboBox,它含有标签JLabel“你的籍贯”,还有下拉框JComboBox。
JPanel 2为带有滚动条的列表框JList,它是放在滚动面板JScrollPane中,它还有一个JLabel“旅游地点”。
代码如下:
/*
* JComboBox/JList/JScrollPane
* 第31讲 常用组件
* */
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);//把字符串数组的元素加入到JComboBox中
String []dd={"九寨沟","故宫","长城","天安门"};//创建一个字符串数组
jlist=new JList(dd);//把字符串数组加入到列表中
jlist.setVisibleRowCount(2);//设置可见两个选项
jsp=new JScrollPane(jlist);//把列表加入到有滚动条的面板中
//设置你希望显示多少个选项
//设置布局
this.setLayout(new GridLayout(3,1));
this.add(jp1);
this.add(jp2);
//添加组件
jp1.add(jl1);
jp1.add(jcb1);
jp2.add(jl2);
jp2.add(jsp);
this.setSize(300,300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}