本章目录
Swing中JTable用于显示表格数据。
JTable构造方法
JTable(Object data[][], Object heads[])
data是一个二维数组,包含要显示的信息,heads是一个一维数组,其中的信息是列表头。
JTable组件使用步骤
示例:使用JTable组件显现人员信息列表
public void init(){
BorderLayout bl=new BorderLayout();
this.setLayout(bl);
//定义表格的表头信息
String[] heads={"姓名","年龄","电话"};
//定义表格中显示的信息
Object[][] data={
{"丘处机","33","13870943994"},{"徐世绩","28","18062795496"},
{"杜如晦","29","18600158798"},{"方孟傲","35","13836188388"},
{"杜小月","19","15248779908"},{"余国荔","25","13238112922"},
{"罗士信","29","15927271222"},{"林徽因","34","15108235082"},
{"陈永华","39","13296693349"},{"萧漩语","34","15847006955"}};
//创建JTable对象
jTable=new JTable(data,heads);
int v=ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED;
int h=ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED;
//创建滚动条面板对象,将JTable加入滚动条中,显示横向和垂直滚动条
JScrollPane jsp=new JScrollPane(jTable,v,h);
//将滚动面板添加至JFrame中
this.add(jsp);
this.setSize(450, 200);
this.setVisible(true);
}
JMenuBar。菜单工具栏,可以在其中添加多个JMenu菜单条。
JMenu。菜单条,可以在其中添加多个JMenuItem菜单项。
JMenuItem。菜单项。
创建JMenuBar、JMenu和JMenuItem实例都可以直接通过其构造方法实现,构造方法中都含有一个字符串类型参数,该参数用于指定显示在菜单上的标题。
JMenu jmf=new JMenu("文件(File)");
创建菜单可以通过setMnemonic()方法设置快捷方式
jmf.setMnemonic(“F”); //在菜单jmf上设置快捷方式F
JTable组件使用步骤:
示例:使用菜单组件创建菜单
public void init(){
this.setLayout(new FlowLayout(FlowLayout.LEFT));
//1.创建菜单工具栏
JMenuBar jmb=new JMenuBar();
//2.创建一级菜单JMenu
JMenu jmf=new JMenu("文件(File)");
//设置快捷方式
jmf.setMnemonic('F');
JMenu jme=new JMenu("编辑(Edit)");
jme.setMnemonic('E');
JMenu jms=new JMenu("资源(Source)");
jms.setMnemonic('s');
...
//3.创建多个JMenuItem项目,创建二级菜单
JMenuItem jmi_new_item=new JMenuItem("新建(N)");jmi_new_item.setMnemonic('N');
JMenuItem jmi_open_item=new JMenuItem("打开(O)");jmi_open_item.setMnemonic('O');
JMenuItem jmi_save_item=new JMenuItem("保存(S)");jmi_save_item.setMnemonic('S');
//4.将菜单项加入文件菜单条中
jmf.add(jmi_new_item);jmf.add(jmi_open_item);jmf.add(jmi_save_item);
//5.将菜单栏加入文件菜单条中
jmb.add(jmf);jmb.add(jme);jmb.add(jms);jmb.add(jmn);jmb.add(jmh);
//6.将菜单工具栏加入JFrame中
this.setJMenuBar(jmb);
this.setSize(400, 200);
this.setVisible(true);
}
11.3 事件处理
事件。发生在界面上的用户交互行为所产生的一种效果。例如,点击鼠标左键,单击一个JButton按钮,就会弹出一个对话框,单击“关闭”按钮就会关闭应用程序窗口等。
事件源。发生事件的对象被称为事件源,如按钮、JFrame窗口均为事件源。
事件监听器。负责监听事件源所发生的事件,并对各种事件做出相应的处理。
委托事件处理模式。
由事件源产生事件,委托给一个或多个事件监听器来监听事件。
当监听器监听到事件被触发时,监听器根据事件产生的类型将其转交给事件处理者(即处理的方法)来处理事件。
事件机制涉及3个成员:事件源、事件和事件监听器。
事件源的创建仅需要通过new关键字创建一个组件对象,而事件由系统提供。所以,实现事件监听器是整个事件处理的核心。
JDK中通过大量的事件监听器接口用于实现不同类型的事件监听器,来监听不同类型的事件。
Swing中使用AWT的事件处理方式,所有的事件类均为EventObject的子类。这些事件监听的接口大多定义在java.awt.event中。
事件监听接口
说明
ActionListener
用于接收操作事件的监听器接口。例如,点击按钮、点击菜单项、文本框按回车等动作
ItemListener
用于处理选项事件的监听器接口。例如,选择JCheckBox、JRadioButton、Jlist以及JcomboBox中的选项
KeyListener
用于接收键盘事件(击键)的监听器接口
MouseListener
用于处理鼠标事件(按下、释放、单击、进入或离开)的监听器接口
TextListener
接收文本事件的监听器接口,用于监听文本组件内容改变。该监听器只有一个方法:textValueChanged(TextEvente)
FocusListener
接收组件上的键盘焦点事件的侦听器接口,用于监听组件收到或失去焦点
AWT低级事件
AWT高级事件
示例:事件处理机制
//为btn添加事件
btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//使用JOptionPane类的showMessageDialog()方法弹出提示框
JOptionPane.showMessageDialog(null, "按钮被单击了!");
}
});
//为JCheckBox注册addItemListener事件
box1.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
//判断事件源对象是否为box1
if(e.getSource()==box1){
JOptionPane.showMessageDialog(null,"你选择的是:"+box1.getText());
}
}
});
//为JTextField注册事件
text.addFocusListener(new FocusListener() {
public void focusLost(FocusEvent e) {
//获取输入文本框中字符的长度
int length=text.getText().length();
if(length>10){
JOptionPane.showMessageDialog(null,"内容长度不能超过6位");
}
}
public void focusGained(FocusEvent e) {
text.setText("文本框被选中了!");
}
});
//为JComboBox下拉列表框注册事件
cbx.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
//判断下拉列表框中的内容是否没选中
if(e.getStateChange()==ItemEvent.SELECTED){
JOptionPane.showMessageDialog(null,"您的国籍是:"+cbx.getSelectedItem());
}
}
});
JDialog。顶级窗口,它和Dialog一样都是表示对话框。
JDialog对话框可分为两种:模态对话框和非模态对话框
构造方法
说明
JDialog(Frame owner)
构造方法,用来创建一个非模态的对话框,owner为对话框所有者(顶级窗口)
JDialog(Frame owner, String title)
构造方法,创建一个具有指定标题的非模态对话框
JDialog(Frame owner, boolean modal)
创建一个有指定模式的无标题对话框
示例:JDialog组件示例
final JDialog dialog = new JDialog(f,"Dialog");
dialog.setSize(220,150); //设置对话框大小
dialog.setLocation(350, 250); //设置对话框位置
dialog.setLayout(new FlowLayout()); //设置布局管理器
final JButton btn3 = new JButton("确定");
dialog.add(btn3); //在对话框的内容面板添加按钮
//为“模态对话框”按钮添加点击事件
btn1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//设置对话框为模态
dialog.setModal(true);
//如果JDialog窗口中没有添加了JLabel标签,就把JLabel标签加上
if (dialog.getComponents().length==11)
dialog.add(label);
//修改标签的内容
label.setText("模式对话框,点击确定按钮关闭");
dialog.setVisible(true); //显示对话框
}});
//为“非模态对话框”按钮添加点击事件
btn2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//设置对话框为非模态
dialog.setModal(false);
...
}});
手机扫一扫
移动阅读更方便
你可能感兴趣的文章