实验7java表格.docx
- 文档编号:27839613
- 上传时间:2023-07-05
- 格式:DOCX
- 页数:14
- 大小:729.74KB
实验7java表格.docx
《实验7java表格.docx》由会员分享,可在线阅读,更多相关《实验7java表格.docx(14页珍藏版)》请在冰豆网上搜索。
实验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();
Vector
tableColumnNames.add("日期");//向列名向量中加入“日期”
for(inti=1;i<=5;i++){
tableColumnNames.add("商品"+i);//依次向列名向量中加入商品1~5
}
Vector
for(inti=1;i<=30;i++){
Vector
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();//获得选中的行数组
Vector
/*获得文本框的数据,并添加到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("此次事件由其他原因触发"); } } }); } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 java 表格
![提示](https://static.bdocx.com/images/bang_tan.gif)