实验7java表格.docx

上传人:b****5 文档编号:27839613 上传时间:2023-07-05 格式:DOCX 页数:14 大小:729.74KB
下载 相关 举报
实验7java表格.docx_第1页
第1页 / 共14页
实验7java表格.docx_第2页
第2页 / 共14页
实验7java表格.docx_第3页
第3页 / 共14页
实验7java表格.docx_第4页
第4页 / 共14页
实验7java表格.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

实验7java表格.docx

《实验7java表格.docx》由会员分享,可在线阅读,更多相关《实验7java表格.docx(14页珍藏版)》请在冰豆网上搜索。

实验7java表格.docx

实验7java表格

实验七:

表格

实验说明:

该例子实现一个商品价格管理的表格,开始会出现商品1~5的30天的不同的价格,用户可以在对应的文本框内输入数据,对表格进行数据的增加,插入,修改和删除,此外,还设置了一个“取消选择”按钮,可以取消用户当前的选择,使操作方便;每一次表格的改变,都会通知表格模型监听器,并在命令行输出表格的具体改变位置。

运行结果:

1.开始界面

2.在文本框中输入个数据,在表格尾部进行添加

3.点击“添加按钮”,数据添加到表格中,此时,各文本框中的数据置空

4.选中第1,3行

5.点击“删除按钮”后,1、3行被删除

6.选中第一行(日期为2),在文本框中输入数据

7.点击“添加”按钮,则新数据被插入到第一行

8.点击取消选择

9.选中第二行,在文本框中输入数据

10.点击“修改按钮”,则数据第二行数据被更新

 

命令行的输出:

 

源代码:

importjava.awt.BorderLayout;

importjava.awt.Container;

importjava.awt.Point;

importjava.awt.event.ActionEvent;

importjava.awt.event.ActionListener;

importjava.awt.event.InputEvent;

importjava.awt.event.MouseAdapter;

importjava.awt.event.MouseEvent;

importjava.util.Arrays;

importjava.util.Vector;

importjavax.swing.JButton;

importjavax.swing.JFrame;

importjavax.swing.JLabel;

importjavax.swing.JOptionPane;

importjavax.swing.JPanel;

importjavax.swing.JScrollPane;

importjavax.swing.JTable;

importjavax.swing.JTextField;

importjavax.swing.ListSelectionModel;

importjavax.swing.event.TableModelEvent;

importjavax.swing.event.TableModelListener;

importjavax.swing.table.DefaultTableModel;

importjavax.swing.table.JTableHeader;

importjavax.swing.table.TableColumnModel;

importjavax.swing.table.*;

publicclassTableTestextendsJFrame{

publicstaticvoidmain(String[]args){

TableTestframe=newTableTest();

frame.setTitle("表格模型事件示例");

frame.pack();

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setVisible(true);

}

publicTableTest(){

Containercontainer=getContentPane();

VectortableColumnNames=newVector();//定义表格列名向量

tableColumnNames.add("日期");//向列名向量中加入“日期”

for(inti=1;i<=5;i++){

tableColumnNames.add("商品"+i);//依次向列名向量中加入商品1~5

}

Vector>tableValues=newVector>();//定义二维数据向量

for(inti=1;i<=30;i++){

VectorrowV=newVector();//定义一维行向量rowV

rowV.add(""+i);//向rowV中加入日期

for(intj=1;j<=5;j++){

rowV.add(""+(int)(Math.random()*1000));//向rowV中加入5个1~1000的随机数

}

tableValues.add(rowV);

}

/*创建表格模型TableModel,并设置其不可编辑*/

finalDefaultTableModelTableModel=newDefaultTableModel(tableValues,tableColumnNames){

publicbooleanisCellEditable(introw,intcolum){

returnfalse;

}

};

finalJTabletable=newJTable(TableModel);//创建指定表格模型的表格

JScrollPanescrollPane=newJScrollPane();

scrollPane.setViewportView(table);

container.add(scrollPane,BorderLayout.CENTER);//将表格加入到窗体中央

JPanelpanel=newJPanel();

container.add(panel,BorderLayout.SOUTH);//将面板加入到窗体下面

/*创建所要用到的标签,文本框和按钮*/

JLabellabeldata=newJLabel("日期:

");

finalJTextFieldtextFielddata=newJTextField(5);

JLabellabel1=newJLabel("商品1:

");

finalJTextFieldtextField1=newJTextField(5);

JLabellabel2=newJLabel("商品2:

");

finalJTextFieldtextField2=newJTextField(5);

JLabellabel3=newJLabel("商品3:

");

finalJTextFieldtextField3=newJTextField(5);

JLabellabel4=newJLabel("商品4:

");

finalJTextFieldtextField4=newJTextField(5);

JLabellabel5=newJLabel("商品5:

");

finalJTextFieldtextField5=newJTextField(5);

JButtonbuttonAdd=newJButton("添加");

JButtonbuttonDel=newJButton("删除");

JButtonbuttonUpd=newJButton("修改");

JButtonbuttonDeselected=newJButton("取消选择");

/*将创建好的标签、文本框和按钮按顺序加入到面板中*/

panel.add(labeldata);

panel.add(textFielddata);

panel.add(label1);

panel.add(textField1);

panel.add(label2);

panel.add(textField2);

panel.add(label3);

panel.add(textField3);

panel.add(label4);

panel.add(textField4);

panel.add(label5);

panel.add(textField5);

panel.add(buttonAdd);

panel.add(buttonDel);

panel.add(buttonUpd);

panel.add(buttonDeselected);

/*为增加按钮添加事件*/

buttonAdd.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

intselectedRows[]=table.getSelectedRows();//获得选中的行数组

VectorrowData=newVector();//定义行数据向量

/*获得文本框的数据,并添加到rowData中*/

rowData.add(textFielddata.getText());

rowData.add(textField1.getText());

rowData.add(textField2.getText());

rowData.add(textField3.getText());

rowData.add(textField4.getText());

rowData.add(textField5.getText());

if(selectedRows.length==0){

TableModel.addRow(rowData);//如果没有选中任意一行,则直接添加到表格的末尾

}else{

TableModel.insertRow(selectedRows[0],rowData);//否则将rowData添加到选中行

}

/*添加完成后,将各个文本框设置为空*/

textFielddata.setText(null);

textField1.setText(null);

textField2.setText(null);

textField3.setText(null);

textField4.setText(null);

textField5.setText(null);

}

});

/*为删除按钮添加事件*/

buttonDel.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

int[]selectedRows=table.getSelectedRows();//获得选中的行数组

for(inti=0;i

TableModel.removeRow(selectedRows[i]-i);//逐一删除选中的行

}

}

});

/*为修改按钮添加事件*/

buttonUpd.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

intselectedRow=table.getSelectedRow();//获得选中的行

if(selectedRow!

=-1){

/*逐一获得文本框的内容并添加到对应的表格中*/

TableModel.setValueAt(textFielddata.getText(),selectedRow,0);

TableModel.setValueAt(textField1.getText(),selectedRow,1);

TableModel.setValueAt(textField2.getText(),selectedRow,2);

TableModel.setValueAt(textField3.getText(),selectedRow,3);

TableModel.setValueAt(textField4.getText(),selectedRow,4);

TableModel.setValueAt(textField5.getText(),selectedRow,5);

textFielddata.setText(null);

textField1.setText(null);

textField2.setText(null);

textField3.setText(null);

textField4.setText(null);

textField5.setText(null);

}

}

});

/*为取消选择按钮添加事件*/

buttonDeselected.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

table.clearSelection();

}

});

/*为表格添加表格模型事件*/

TableModel.addTableModelListener(newTableModelListener(){

publicvoidtableChanged(TableModelEvente){

/*表格发生了什么变化,将其打印到命令行中*/

inttype=e.getType();

intfirstRow=e.getFirstRow();

intcolumn=e.getColumn();

switch(type){

caseTableModelEvent.DELETE:

System.out.print("此次事件由删除行触发:

");

System.out.println("此次删除的是第"+firstRow+"行");

break;

caseTableModelEvent.INSERT:

System.out.print("此次事件由插入行触发:

");

System.out.println("此次插入的是第"+firstRow+"行");

break;

caseTableModelEvent.UPDATE:

System.out.print("此次事件由更新行触发:

");

System.out.println("此次更新的是第"+firstRow+"行第"+column+"列");

break;

default:

System.out.println("此次事件由其他原因触发");

}

}

});

}

}

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1