分析:
一个人员信息表,主要包括的标签有JLable(标签)、文本框、文本域、单选按钮、多选框、下拉列表和列表框;
文本域与文本框的最大区别就是文本域允许用户输入多行文本信息。
在 Swing 中使用 JTextArea 类实现一个文本域,其常用构造方法如下。
- JTextArea():创建一个默认的文本域。
- JTextArea(int rows,int columns):创建一个具有指定行数和列数的文本域。
- JTextArea(String text):创建一个包含指定文本的文本域。
- JTextArea(String text,int rows,int columns):创建一个既包含指定文本,又包含指定行数和列数的多行文本域。
JTextArea 类的常用方法如表 1 所示。
方法名称 | 说明 |
---|---|
void append(String str) | 将字符串 str 添加到文本域的最后位置 |
void setColumns(int columns) | 设置文本域的行数 |
void setRows(int rows) | 设置文本域的列数 |
int getColumns() | 获取文本域的行数 |
void setLineWrap(boolean wrap) | 设置文本域的换行策略 |
int getRows() | 获取文本域的列数 |
void insert(String str,int position) | 插入指定的字符串到文本域的指定位置 |
void replaceRange(String str,int start,int end) | 将指定的开始位 start 与结束位 end 之间的字符串用指定的字符串 str 取代 |
一个复选框有选中和未选中两种状态,并且可以同时选定多个复选框。Swing 中使用 JCheckBox 类实现复选框,该类的常用构造方法如下。
- JCheckBox():创建一个默认的复选框,在默认情况下既未指定文本,也未指定图像,并且未被选择。
- JCheckBox(String text):创建一个指定文本的复选框。
- JCheckBox(String text,boolean selected):创建一个指定文本和选择状态的复选框。
单选按钮与复选框类似都有两种状态,不同的是一组单选按钮中只能有一个处于选中状态。
Swing 中 JRadioButton 类实现单选按钮,它与 JCheckBox 一样都是从 JToggleButton 类派生出来的。JRadioButton 通常位于一个 ButtonGroup 按钮组中,不在按钮组中的 JRadioButton 也就失去了单选按钮的意义。
在同一个 ButtonGroup 按钮组中的单选按钮,只能有一个单选按钮被选中。因此,如果创建的多个单选按钮其初始状态都是选中状态,则最先加入 ButtonGroup 按钮组的单选按钮的选中状态被保留,其后加入到 ButtonGroup 按钮组中的其他单选按钮的选中状态被取消。
JRadioButton 类的常用构造方法如下。
- JRadioButton():创建一个初始化为未选择的单选按钮,其文本未设定。
- JRadioButton(Icon icon):创建一个初始化为未选择的单选按钮,其具有指定的图像但无文本。
- JRadioButton(Icon icon,boolean selected):创建一个具有指定图像和选择状态的单选按钮,但无文本。
- JRadioButton(String text):创建一个具有指定文本但未选择的单选按钮。
- JRadioButton(String text,boolean selected):创建一个具有指定文本和选择状态的单选按钮。
- JRadioButton(String text,Icon icon):创建一个具有指定的文本和图像并初始化为未选择的单选按钮。
- JRadioButton(String text,Icon icon,boolean selected):创建一个具有指定的文本、图像和选择状态的单选按钮。
下拉列表由 JComboBox 类实现,常用构造方法如下。
- JComboBox():创建一个空的 JComboBox 对象。
- JComboBox(ComboBoxModel aModel):创建一个 JComboBox,其选项取自现有的 ComboBoxModel。
- JComboBox(Object[] items):创建包含指定数组中元素的 JComboBox。
JComboBox 类提供了多个成员方法用于操作下拉列表框中的项,如表 1 所示。
方法名称 | 说明 |
---|---|
void addItem(Object anObject) | 将指定的对象作为选项添加到下拉列表框中 |
void insertItemAt(Object anObject,int index) | 在下拉列表框中的指定索引处插入项 |
void removeltem(0bject anObject) | 在下拉列表框中删除指定的对象项 |
void removeItemAt(int anlndex) | 在下拉列表框中删除指定位置的对象项 |
void removeAllItems() | 从下拉列表框中删除所有项 |
int getItemCount() | 返回下拉列表框中的项数 |
Object getItemAt(int index) | 获取指定索引的列表项,索引从 0 开始 |
int getSelectedIndex() | 获取当前选择的索引 |
Object getSelectedltem() | 获取当前选择的项 |
JComboBox 能够响应 ItemEvent 事件和 ActionEvent 事件,其中 ItemEvent 触发的时机是当下拉列表框中的所选项更改时,ActionEvent 触发的时机是当用户在 JComboBox 上直接输入选择项并回车时。要处理这两个事件,需要创建相应的事件类并实现 ItemListener 接口和 ActionListener 接口。
列表框与下拉列表的区别不仅仅表现在外观上,当激活下拉列表时,会出现下拉列表框中的内容。但列表框只是在窗体系上占据固定的大小,如果需要列表框具有滚动效果,可以将列表框放到滚动面板中。当用户选择列表框中的某一项时,按住 Shift 键并选择列表框中的其他项目,可以连续选择两个选项之间的所有项目,也可以按住 Ctrl 键选择多个项目。
Swing 中使用 JList 类来表示列表框,该类的常用构造方法如下。
- JList():构造一个空的只读模型的列表框。
- JList(ListModel dataModel):根据指定的非 null 模型对象构造一个显示元素的列表框。
- JList(Object[] listData):使用 listData 指定的元素构造—个列表框。
- JList(Vector<?> listData):使用 listData 指定的元素构造一个列表框。
上述的第一个构造方法没有参数,使用此方法创建列表框后可以使用 setListData() 方法对列表框的元素进行填充,也可以调用其他形式的构造方法在初始化时对列表框的元素进行填充。常用的元素类型有 3 种,分别是数组、Vector 对象和 ListModel 模型。
效果图如下:
实现的代码如下
package cn.com.plane;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridLayout;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class InfoDemo {
/*
* author:命运的信徒 date:2019/1/18 arm:基础信息
*/
private static void setPage() {
JFrame jf = new JFrame("基础信息");
// 设置布局模式
GridLayout gly = new GridLayout(8, 2);
jf.setLayout(gly);
// 标题
JPanel jp = new JPanel();
jp.setPreferredSize(new Dimension(10, 100));
JLabel jl = new JLabel("人员基础信息表");
jl.setFont(new Font("楷体", Font.BOLD, 20));
jp.add(jl);
jf.add(jp);
// 姓名(文本框)
JPanel jp1 = new JPanel();
jp1.setPreferredSize(new Dimension(100, 100));
JLabel jl1 = new JLabel("姓名:");
jl1.setFont(new Font("楷体", Font.BOLD, 20));
JTextField jtf = new JTextField();
jtf.setColumns(10);
jl1.setForeground(Color.red);
jp1.add(jl1);
jp1.add(jtf);
jf.add(jp1);
// 性别
JPanel jp2 = new JPanel();
jf.add(jp2);
JLabel jl2 = new JLabel("性别");
jl2.setFont(new Font("楷体", Font.BOLD, 20));
ButtonGroup bg1 = new ButtonGroup();
JRadioButton jr0 = new JRadioButton("男");
JRadioButton jr1 = new JRadioButton("女");
bg1.add(jr0);
bg1.add(jr1);
jp2.add(jl2);
jp2.add(jr0);
jp2.add(jr1);
// 名族
JPanel jp3 = new JPanel();
jf.add(jp3);
JLabel jl3 = new JLabel("民族");
JComboBox jcm = new JComboBox();
jcm.addItem("请选择");
jcm.addItem("汉族");
jcm.addItem("满族");
jcm.addItem("白族");
jcm.addItem("布依族");
jcm.addItem("哈尼族");
jp3.add(jl3);
jp3.add(jcm);
// 招考条件 下拉列表
JPanel jp4 = new JPanel();
jf.add(jp4);
String[] items = { "1、党员", "2、年龄35岁以下", "3、热爱国家、拥护党的指针" };
JList<Object> jlist = new JList<Object>(items);
jlist.setBackground(Color.red);
jlist.setForeground(Color.white);
jp4.add(jlist);
// 英语水平
JPanel jp5 = new JPanel();
jf.add(jp5);
JLabel jl5 = new JLabel("英语水平");
jp5.add(jl5);
JCheckBox jcb = new JCheckBox("四级水平");
JCheckBox jcb1 = new JCheckBox("六级水平");
JCheckBox jcb2 = new JCheckBox("托福");
JCheckBox jcb3 = new JCheckBox("雅思");
jp5.add(jcb);
jp5.add(jcb1);
jp5.add(jcb2);
jp5.add(jcb3);
// 个人推荐(文本域)
JPanel jp6=new JPanel();
jf.add(jp6);
//设置文本域的行与列
JTextArea jta=new JTextArea(6,20);
jta.setBackground(Color.pink);
jta.setForeground(Color.black);
//开头
jta.setText("你的优势是什么?");
//设置自动换行
jta.setLineWrap(true);
jp6.add(jta);
//设置提交按钮
JPanel jp7=new JPanel();
jf.add(jp7);
JButton jb1=new JButton("提交");
jb1.setBackground(Color.blue);
jb1.setForeground(Color.WHITE);
jp7.add(jb1);
// 设置窗体关闭的时候程序就关闭
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 设置窗体可见
jf.pack();
jf.setVisible(true);
}
public static void main(String[] args) {
setPage();
}
}