JLabel对象可以显示文本、图像或同时显示二者。标签不对输入事件作出反应。因此,它无法获得键盘焦点。
可以通过设置垂直和水平对齐方式,指定标签显示区中标签内容在何处对齐。默认情况下,标签在其显示区内垂直居中对齐。对于只显示文本的标签是开始边对齐;而只显示图像的标签则水平居中对齐。还可以指定文本相对于图像的位置。默认情况下,文本位于图像的结尾处,文本和图像都垂直对齐。
标签对象可用javax.swing类库里的JLabel类创建。
下面是一个标签的例子。
ImageIcon icon=new ImageIcon(“1.gif”);
//创建一个显示的文字和图像的标签,且水平对齐方式为居中
JLabel lbl=new JLabel(“我是一个标签”,icon,CENTER);
lbl.setBackground(Color.yellow);//设置标签的底色为黄色
lbl.setForeground(Color.red);//设置标签上文字为红色
Font fnt=new Font(" Serief ",Font.BOLD+FONT.ITALIC,20);
lbl.setFont(fnt);//设置标签上字体的样式
该例子创建了一个显示的文字和图像的标签,且水平对齐方式为居中。利用标签控件的方法对标签上的文字的背景颜色和前景颜色进行设置,并设置了标签文字的字体为Serief,字形为粗体加斜体,字号为20。
文本编辑组件是可以接收用户的文本输入并具有一定编辑功能的界面元素。这些编辑功能包括修改、删除、块复制和块粘贴等。文本编辑组件分为两种:一种是单行文本编辑组件,简称JTextField;另一种是多行文本编辑组件,简称文本区JTextArea。
JTextField类和JTextArea类均是JTextComponent类的子类。JTextField和JTextArea类继承了JTextComponent类中许多常用方法。
1.JTextField文本框
单行文本输入区也叫做文本域,一般用来让用户输入像姓名、信用卡号这样的信息,它是一个能够接收用户的键盘输入的小块区域。文本框可被设置为可编辑或不可编辑两种。
JTextField通过setActionCommand方法设置的命令字符串,此字符串用作针对被激发的操作事件的命令字符串。
JTextField的水平对齐方式可以设置为左对齐、前端对齐、居中对齐、右对齐或尾部对齐。右对齐/尾部对齐在所需的字段文本尺寸小于为它分配的尺寸时使用。这是由setHorizontalAlignment和getHorizontalAlignment方法确定的。默认情况下为前端对齐。
2.JTextArea文本区
文本区是可以显示多行多列的文本,是由JTextArea类来实现的。
JTextArea不管理滚动,但实现了Swing的Scrollable接口。这允许把它放置在JScrollPane的内部(如果需要滚动行为),或者直接使用(如果不需要滚动)。
JTextArea具有用于换行的bound属性,该属性控制其是否换行。在默认情况下,换行属性设置为false(不换行)。
下面是是一个文本框编辑的例子。
JTextField tf1=new JTextField(“该文本框不可编辑”,20);
//利用JPasswordField将tf2的回显字符为“*”
JPasswordField tf2=new JPasswordField(“口令输入框”,20);
tf1.setBounds(20,60,120,20);
tf1.setEditable(false);//设置文本框对象tf1为不可编辑
JTextArea ta1=new JTextArea(“大家好!”,10,20);
ta1.seBounds(20,90,140,100);
JScrollPane scrPn=new JScrollPane(ta1);
scrPn.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
scrPn.setPreferredSize(new Dimension(250,250));
按钮是窗口程序设计中最常用的组件之一,按钮可以带标签或图像。通常一个按钮对应着一种特定的操作,如确定、保存、取消等。从而用户可以用鼠标单击它来控制程序运行的流程。javax.swing类库中提供了JButton类,用来处理按钮控件的相关操作。
下面是一个按钮的例子。
ImageIcon buttonIcon=new ImageIcon(“images/right.gif”);
//按钮btn1上同时显示文字和图标
JButton btn1=new JButton(“确定”,buttonIcon);
//按钮btn1上的文字在垂直方向上是居中对齐的
btn1.setVerticalTextPosition(AbstractButton.CENTER);
//按钮btn1上的文字在水平方向上是左对齐的
btn1.setHorizontalTextPosition(AbstractButton.LEFT);
//设置按钮b1的替代键盘是“d”
btn1.setMnemonic(‘d’);
btn1.setActionCommand(“Ok”);
该例声明了一个JButton对象btn1,并设置该按钮上文字的对齐方式、替代的键盘按键和按钮激发的操作事件的命令名称。
复选框给用户“二选一”的输入选择。每个复选框有两种状态:“选中(on)”或“非选中(off)”。Java语言提供了JCheckBox类来创建复选框。
单选框给用户“多选一”的输入选择。每个单选按钮有两种状态:被选择或取消选择。Java语言提供了JRadioButton类来创建单选按钮。单选按钮还必须配合ButtonGroup类将其组成单选按钮组来使用(用ButtonGroup的add方法将JRadioButton对象包含在此组中),在这种情况下用ButtonGroup类管辖的所有的JRadioButton组件中,只能有一个处于被选择状态。
下面是一个复选框和单选框的例子。
ImageIcon icon1=new ImageIcon(“1.jpg”);
JCheckBox chk1=new JCheckBox(“粗体”,icon1,true);//设置chk1为选中状态
JCheckBox chk2=new JCheckBox(“斜体”);
JRadioButton rdobtn_g1=new JRadioButton(“红色”);
//设置rdobtn_g2为选中状态
JRadioButton rdobtn_g2=new JRadioButton(“绿色”,true);
ButtonGroup grp=new ButtonGroup();
grp.add(rdobtn_g1);
grp.add(rdobtn_g2);
该例子创建了两个JCheckBox对象、两个JRadioButton对象和一个ButtonGroup对象,其中chk1和rdobtn_g2设置为被选中的状态。复选框chk1和chk2可实现字体样式的设置。将rdobtn_g1和rdobtn_g2两个对象设置为单选按钮组的成员,可实现颜色的选择。
列表框组件JList向用户提供“多选多”的输入选择,列表框通常列出若干选项,可指定列出选项的数目,超过长度时被折叠起来。列表框中提供了多个文本选项,可以浏览多项。
Java语言以JList类来创建列表框组件,JList类继承JComponent类。列表框组件的使用方式非常简单,先用JList类的add()方法将选项加入到列表框中,然后再利用程序来控制列表框的显示方式。
下面是一个列表框的例子。
String[] data={“红色”,“绿色”,“蓝色”};
JList lst=new JList(data);
lst.setSelectedIndex(1);//select “绿色”
lst.setSelectedValue();//returns “绿色”
该例创建了一个具有3个选项的JList对象lst,可实现颜色的选择。
下拉列表框(JComboBox)与列表框相似,它同样是一个有许多选项的选择组件,但下拉列表框中所有选项都被折叠收藏起来,且只会将用户的单个选项显示在显示栏上。要改变被选中的选项,可以单击下拉列表框右边的向下箭头,然后从展开的选项框中选择一个选项即可。下拉列表框JComboBox继承自JComponent类。
下面是一个列表框的例子。
String[] data={“红色”,“绿色”,“蓝色”};
JComboBox cbx=new JComboBox(data);
该例创建了一个具有3个选项的JComboBox对象cbx,该例同样可以实现颜色的选择。
菜单JMenu是用户用来输入有关操作命令的简便工具。菜单可将多种操作组合在一起,通过下拉方式或弹出方式供用户使用。在Java语言中,一个菜单组件通常由3种菜单对象来组成:菜单条JMenuBar、菜单JMenu和菜单项JMenuItem。每个菜单条包含若干个菜单,而每个菜单中还可包含若干个菜单项。每个菜单项的作用与按钮相似,也是在单击时引发的一个动作命令,所以整个菜单就是一组层次化组织、管理的命令集合,使用它用户可以方便地向程序发布命令。要创建一个菜单系统,首先要有一个框架,在框架中放置一个菜单条对象JMenuBar,再在菜单条上添加若干个菜单对象JMenu,每个菜单对象上再添加若干个菜单项对象JMenuItem。然后用add()方法把JMenu对象添加到JMenuBar对象中,再把JMenuItem或JComboBoxItem对象添加到JMenu对象中。
如果希望菜单项还可以进一步引出更多的菜单项,可以使用二级菜单。二级菜单的使用方法很简单,创建一个包含若干菜单项(JMenuItem)的菜单(JMenu),把这个菜单像菜单项一样加入到一级菜单项中即可。
在菜单中还有一种带复选框的菜单项,这种菜单项的功能是由JComboBoxItem类实现的。
下面是一个菜单的例子。
JMenuBar mb=new JMenuBar();//创建JMenuBar对象mb
JMenu mn1=new JMenu(“颜色”);//创建JMenu对象mn1
JMenu mn2=new JMenu(“窗口”);//创建JMenu对象mn2
JMenuItem mi1=new JMenuItem(“红色”);
JMenuItem mi2=new JMenuItem(“绿色”);
JMenuItem mi3=new JMenuItem(“关闭”);
JCheckBoxMenuItem cbmi=new JCheckBoxMenuItem(“斜体”);//复选框菜单项
mb.add(mn1);//将mn1加入到mb中
mb.add(mn2);
mn1.add(mi1);//将mi1加入到mn1中
mn1.add(mi2);
mn1.addSeparator();//加一条分隔线
mn1.add(cbmi);//添加带复选框的菜单项
该例创建了一个JMenuBar对象mb、两个JMenu对象、三个JMenuItem对象、一个带复选框的菜单项cbmi,可实现颜色和样式的设置。