19. java.awt 部件
村少 @ 2007-01-12 22:57
19. java.awt 部件 - Java2详解
19.1 使用java.awt构造图形用户界面
awt包提供的部件的继承层次:
部件
|
|-按钮
|-文本部件
| |-文本域
| |-文本区
|
|-复选框
|-菜单部件
| |-菜单
| |-菜单条
| |-菜单项
|
|-容器
|-面板
| |-小应用程序
|
|-窗口
|-框架
|-对话框
19.2 按钮 Button
创建按钮:
有带标签和不带标签两个构造方法
public Button();
public Button(String lable);
设置/读取按钮的标签:
public void setLable(String)
public String getLable()
处理按钮消息
处理Java中的事件有两种办法.
在Java 1.0事件模式中.所有部件都有一个名为action的方法.当部件上有动作时.系统就调用action方法.
但这种事件处理方式不好. 所以已经将 action 方法标记为将要从API中删除的方法.
// 例子: 用action方法处理按钮事件.
import java.applet.*;
import java.awt.*;
public class ButtonApplet extends Applet {
public void init() {
add(new Button("Red"));
add(new Button("Blue"));
}
public boolean action(Event evt, Object whatAction) {
if (!(evt.target instanceof Button)) {
return false;
}
String buttonLabel = (String)whatAction;
if (buttonLabel == "Red") {
setBackground(Color.red);
}
else if (buttonLabel == "Blue") {
setBackground(Color.blue);
}
repaint();
return true;
}
}
另一种事件处理方式是使用Java 1.1版的事件模式. 这是使用监听器和适配器的模式. 如下:
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
// 一个操作事件(即语意上的事件)的监听器类.
// 当他监听的对象有事件发生时会通知他. 调用actionPerformed方法.
public class BGSetter extends Object implements ActionListener {
Component component;
Color color;
public BGSetter(Component component, Color color) {
this.component = component;
this.color = color;
}
public void actionPerformed(ActionEvent evt) {
component.setBackground(color);
component.repaint();
}
}
////////////////////////////////////////////////////////////////////////////
// ActionListener接口
// 其中的ActionListener接口是用于接收操作事件(即语意事件)的侦听器接口。
// 该接口只有一个方法 void actionPerformed(ActionEvent e) .
// 对处理操作事件感兴趣的类可以实现此接口,然后用 addActionListener
// 方法把该监听器对象向某个组件注册。在组件上发生操作事件时,就会调用该监听器对象的
// actionPerformed 方法。 该方法的参数ActionEvent e 是组件上产生的语意事件对象.
// 所谓语意事件是指高级别的事件. 例如按钮的按下事件等. 而不是鼠标单击这样的低级事件.
//////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
// ActionEvent类
// public class ActionEvent extends AWTEvent
// 构造器:
// public ActionEvent(Object source, int id, String command)
// public ActionEvent(Object source, int id, String command, int modifiers)
// public ActionEvent(Object source, int id, String command,
// long when, int modifiers)
// 其中: source 是发起事件的源对象. id是标识事件的整数. command是与事件相关的命令.
// modifiers是发生此动作时按下的组合键. when是发生事件的时间.
// ActionEvent类的其他方法有:
// public String getActionCommand() //返回标识此事件命令的字符串
// public long getWhen() //返回此事件的时间戳
// public int getModifiers() //返回事件发生时按下的组合键
/////////////////////////////////////////////////////////////////////////////
// 创建了按钮后. 向按钮注册一个监听器.
import java.applet.*;
import java.awt.*;
public class Button2Applet extends Applet {
public void init() {
Button red = new Button("Red");
add(red);
red.addActionListener(new BGSetter(this, Color.red));
Button blue = new Button("Blue");
add(blue);
blue.addActionListener(new BGSetter(this, Color.blue));
}
}
19.4 标签 Label
创建标签
public Label() //空标签
public Label(String) //指定标签上的文字
public Label(String, int) //后边的int参数是对齐方式.如 Label.LEFT是左对齐.
设置/读取标签上的文本:
public void setText(String)
public String getText()
设置/读取标签上文字的对齐方式:
public void setAlignment(int) throws IllegalargumentException
public int getAlignment()
//下边的例子示例了Checkbox事件的处理:
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class CheckboxExample extends Applet {
public void init() {
Checkbox redBlue = new Checkbox("Red/Blue");
add(redBlue);
redBlue.addItemListener( new ItemListener(){ //监听器类是个内制类.
public void itemStateChanged(ItemEvent evt){ //实现了接口中唯一的方法
if (evt.getStateChange() == ItemEvent.SELECTED)
setColor(Color.red);
else
setColor(Color.blue);
}
} );
}
public void setColor(Color color) {
setBackground(color);
repaint();
}
}
创建单选按钮:
要创建单选按钮要先创建复选框组. 复选框组的构造函数为:
public CheckboxGroup()
在用它的对象作参数创建单选按钮:
public Checkbox(String label, boolean initialState, CheckboxGroup group)
public Checkbox(String label, CheckboxGroup group, boolean initialState)
这两个函数就可以创建互斥的单选按钮组. 组中的最后一个初时状态为true的单选按钮会被初始为选择状态.
取得单选按钮的组用:
public CheckboxGroup getCheckboxGroup()
对于复选框组(CheckboxGroup)的对象. 可以调用下边的方法检查/设置组中一个单选按钮是否选中:
public Checkbox getSelectedCheckbox()
void setSelectedCheckbox(Checkbox box)
19.6 选择框 Choice
选择框(就是下拉式列表)也实现了 ItemSelectable 接口.
构造函数:
Choice()
其它函数:
public int getItemCount() //返回此 Choice 菜单中项的数量。
public String getItem(int index) //获得此 Choice 菜单中指定索引上的字符串。
public void add(String item) //添加一个项。
public void insert(String item, int index) //将菜单项插入指定位置. 索引从0开始.
public void remove(int position) //移除指定的项.
public void remove(String item) //移除第一个item。
//如果正被移除的项是目前选定的项,则该选择中的第一个项将成为选定项。
public void removeAll() //移除所有的项。
public String getSelectedItem() //获得当前选择的字符串表示形式
public Object[] getSelectedObjects() //返回包含当前选定项的数组(长度为 1)
public int getSelectedIndex() //返回当前选定项的索引
public void select(int pos) //选定指定位置上的项
public void select(String str) //选定str的项. 如果有多个同名的. 则选索引值最小的那个.
public void addItemListener(ItemListener l) //添加项侦听器
public void removeItemListener(ItemListener l) //移除项侦听器
public ItemListener[] getItemListeners() //返回已注册的所有项侦听器的数组
public T[] getListeners(Class listenerType) //不懂
protected void processEvent(AWTEvent e) //不懂
protected void processItemEvent(ItemEvent e) //不懂
19.7 列表框 List
列表框也实现了ItemSelectable接口. 其中的值可以单选. 也可以多选.
当用户选中或取消选中某项时,AWT 将向 List 送一个 ItemEvent 实例。
当用户双击滚动列表中的某一项时,AWT 会在紧随 ItemEvent 后向 List 发送一个 ActionEvent 实例
当用户选中List的某项,按下 return 键时,AWT 也将生成一个 ActionEvent。
构造方法:
public List() //默认构造器. 单选. 可见4行.
public List(int rows) // 单选 . 可见 rows 行.
public List(int rows, boolean multipleMode) //若multipleMode为true则是多选.
其它方法:
public int getItemCount() //获取List中的项数
public String getItem(int index) //获取索引index的项
public String[] getItems() //获取所有的项
public void add(String item) //向末尾添加项
public void add(String item, int index) //向指定位置添加项
public void replaceItem(String newValue, int index) //替换指定位置上的项
public void removeAll() //移除所有项
public void remove(String item) //移除该项的第一次出现
public void remove(int position) //移除指定位置的项
public int getSelectedIndex() //获取选中的项的索引
public String getSelectedItem() //获取选中的项
public int[] getSelectedIndexes() //获取所有选中项的索引数组
public String[] getSelectedItems() //获取所有选中项的数组
public Object[] getSelectedObjects() //获取选中项的数组. 声明于ItemSelectable 接口
public void select(int index) //选择指定索引处的项
public void deselect(int index) //取消选择指定索引处的项
public boolean isIndexSelected(int index) //检查是否选定index项
public int getRows() //获取可视行数
public boolean isMultipleMode() //是否允许多选?
public void setMultipleMode(boolean b) // 设置是否允许多选.
public void makeVisible(int index) //使指定索引处的项可视
public int getVisibleIndex() //获取上次由 makeVisible 方法使其可视的项的索引
public Dimension getPreferredSize(int rows) //获取具有指定行数的列表的首选维数
public Dimension getMinimumSize(int rows) //获取具有指定行数的列表的最少维数
public Dimension getPreferredSize() //获取此滚动列表的首选大小
public Dimension getMinimumSize() //获取此滚动列表的最小大小
public void addItemListener(ItemListener l) //添加"项侦听器"
public void removeItemListener(ItemListener l) //移除"项侦听器"
public ItemListener[] getItemListeners() //返回已在此List上注册的所有项侦听器的数组
public void addActionListener(ActionListener l) //添加 Action侦听器(如双击某项)
public void removeActionListener(ActionListener l) //移除 Action侦听器
public ActionListener[] getActionListeners() //返回已注册的所有操作侦听器的数组
public T[] getListeners(Class listenerType) //不懂
protected void processEvent(AWTEvent e) //不懂
protected void processItemEvent(ItemEvent e) //不懂
protected void processActionEvent(ActionEvent e) //不懂
19.8 文本域和文本区 TextField 和 TextArea
即单行文本和多行文本. 两个类都派生自 TextComponent类.
TextComponent类中的方法如下:
public void enableInputMethods(boolean enable) //启用或禁用此方法的输入方法支持
public InputMethodRequests getInputMethodRequests() //获得输入方法请求处理程序
public void setText(String t) //设置文本。
public String getText() //返回文本
public boolean isEditable() //是否可编辑?
public void setEditable(boolean b) //设置是否可编辑
public Color getBackground() //获得此文本组件的背景色
public void setBackground(Color c) //设置此文本组件的背景色
public int getSelectionStart() //获取选定文本的开始位置
public void setSelectionStart(int selectionStart) //设置选定文本的开始位置
public int getSelectionEnd() //获取选定文本的结束位置
public void setSelectionEnd(int selectionEnd) //设置选定文本的结束位置
public void select(int selectionStart, int selectionEnd) //选择一段文本
public void selectAll() //选择所有文本
public void setCaretPosition(int position) //设置文本插入符的位置
public int getCaretPosition() //返回文本插入符的位置
public void addTextListener(TextListener l) //添加文本事件侦听器
public void removeTextListener(TextListener l) //移除指定的文本事件侦听器
public TextListener[] getTextListeners() //返回所有已注册文本侦听器的数组
public T[] getListeners(Class listenerType) //不懂
protected void processEvent(AWTEvent e) //不懂
protected void processTextEvent(TextEvent e) //不懂
文本域
创建文本域(TextField)
public TextField()
public TextField(String text) //指定初始文本
public TextField(int columns) //指定列数. 列是近似平均字符宽度.与平台有关.
public TextField(String text, int columns) //同时指定二者.
其它方法:
public char getEchoChar() //获取回显字符(输入密码时显示的). 若为0则正常显示用户输入.
public void setEchoChar(char c) //设置此文本字段的回送字符
public void setText(String t) //设置文本
public boolean echoCharIsSet() //是否有一个回送字符集?
public int getColumns() //获取列数
public void setColumns(int columns) //设置列数
public Dimension getPreferredSize(int columns) //获取具有指定列数的文本字段的首选大小
public Dimension getPreferredSize() //获取此文本字段的首选大小
public Dimension getMinimumSize(int columns) //获取具有指定列数的文本字段的最小尺寸
public Dimension getMinimumSize() //获取此文本字段的最小尺寸
public void addActionListener(ActionListener l) //添加Action侦听器(按回车键产生事件)
public void removeActionListener(ActionListener l) //移除Action侦听器
public ActionListener[] getActionListeners() //返回已注册的Action侦听器的数组
public T[] getListeners(Class listenerType) //不懂
protected void processEvent(AWTEvent e) //不懂
protected void processActionEvent(ActionEvent e) //不懂
文本区
构造方法:
public TextArea() //缺省的.初始时没有文本. 带垂直/水平滚动条.
public TextArea(String text)
public TextArea(int rows, int columns) //指定行数和列数
public TextArea(String text, int rows, int columns)
public TextArea(String text, int rows, int columns, int scrollbars)
其中: text是初始文本. rows/columns是行列数. scrollbars是指定显示什么滚动条.可以使用常量:
SCROLLBARS_BOTH, SCROLLBARS_VERTICAL_ONLY,
SCROLLBARS_HORIZONTAL_ONLY, SCROLLBARS_NONE
其它方法:
public void insert(String str, int pos) //指定位置插入指定文本
public void append(String str) //将str追加到文本区的当前文本
public void replaceRange(String str, int start, int end) //替换某区间的文本
public int getRows() //这4个函数查看/设置行列数
public void setRows(int rows)
public int getColumns()
public void setColumns(int columns)
public int getScrollbarVisibility() //查看使用何种滚动条的枚举值
public Dimension getPreferredSize(int rows, int columns) //返回具有指定行列数的首选大小
public Dimension getPreferredSize() &