Java:swing图书管理系统(详细个人注释版)Object类详解(2)



package swingPackage;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Vector;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
public class JTableJieMian extends JFrame {
/*Model(模型; )模式(; 样式; 模范; 时装模特儿; 设计; 型号; 典型; 榜样; 原型)*/
/*DefaultTableModel(不履行; 违约; 拖欠; 未到庭;) 默认值*/
/*DefaultTableModel是 TableModel 的一个实现,
* 它使用一个 Vector 来存储单元格的值对象,该 Vector 由多个 Vector 组成。
通过DefaultTableModel可以对表格进行数据的增删改,
比较常用的。*/
static DefaultTableModel dtm = null;// 储存内容的容器
/*
* 1.声明表格 2.声明数据源 (没有数据库,所以是模拟数据源) 3. 将每个集合的内容添加到大集合(保存数据的集合)中 4.声明一个储存内容的容器
* (defaultTableModel) 5.将内容和标题添加到储存内容的容器里 6.将储存内容的容器添加到JTable中
* 7.标题不见了,内容假如比较多,加个滚动条
*/
/*Table(桌子; 列表; 一览表; )表格(; 平面; 谈判桌; 饭菜; 乘法表; 名次表)*/
/*JTable 用来显示和编辑常规二维单元表*/
static JTable jt1 = null;// 声明一个表格
// 这个集合用来存放内容的标题
/*在相对于ArrayList来说,Vector线程是安全的,也就是说是同步的
创建了一个向量类的对象后,可以往其中随意地插入不同的类的对象,既不需顾及类型也不需预先选定向量的容量,并可方便地进行查找。
对于预先不知或不愿预先定义数组大小,并需频繁进行查找、插入和删除工作的情况,可以考虑使用向量类。
Java.util.Vector提供了向量(Vector)类以实现类似动态数组的功能。*/
/*Object 是 Java 类库中的一个特殊类,也是所有类的父类。也就是说,Java 允许把任何类型的对象赋给 Object 类型的变量。
* 当一个类被定义后,如果没有指定继承的父类,那么默认父类就是 Object 类。*/
Vector<Object> v = new Vector<Object>();
// 存放具体的内容的时候,因为内容是多行多列,所以我们使用一个集合的集合存储
/*Object:(物体; 东西; )对象(; 目标; 目的; 宗旨; 客体; 宾语)*/
Vector<Vector<Object>> v_neirong = new Vector<Vector<Object>>();
// 现在没有数据库,所以数据我们使用模拟数据库
// List ArrayList Vector(和List一样。对于JTable的操作的时候只能使用这个集合)
// set HashSet
// Map HashMap
public JTableJieMian() {
// 布局方式、大小、居中、释放资源、是否显示
this.setTitle("豆瓣TOP评分9分以上书单");
v.add("编号");
v.add("图书名称");
v.add("价格");
v.add("出版社");
Vector<Object> v1 = new Vector<Object>();
v1.add(1);
v1.add("小王子");
v1.add("11.88元");
v1.add("人民文学出版社");
Vector<Object> v2 = new Vector<Object>();
v2.add(2);
v2.add("霍乱时期的爱情");
v2.add("20.0元");
v2.add("南海出版公司");
Vector<Object> v3 = new Vector<Object>();
v3.add(3);
v3.add("撒哈拉的故事");
v3.add("22.00元");
v3.add("皇冠出版社");
Vector<Object> v4 = new Vector<Object>();
v4.add(4);
v4.add("月亮和六便士");
v4.add("17.00元");
v4.add("上海译文出版社");
Vector<Object> v5 = new Vector<Object>();
v5.add(5);
v5.add("活着");
v5.add("18.00元");
v5.add("南海出版公司");
Vector<Object> v6 = new Vector<Object>();
v6.add(6);
v6.add("百年孤独");
v6.add("19.00元");
v6.add("南海出版公司");
Vector<Object> v7 = new Vector<Object>();
v7.add(7);
v7.add("平凡的世界");
v7.add("20.00元");
v7.add("人民文学出版社");
v_neirong.add(v1);
v_neirong.add(v2);
v_neirong.add(v3);
v_neirong.add(v4);
v_neirong.add(v5);
v_neirong.add(v6);
v_neirong.add(v7);
// dtm = new DefaultTableModel(v_neirong, v);// 将内容储存到容器中
dtm = new DefaultTableModel(v_neirong, v) {
@Override
public boolean isCellEditable(int row, int column) {
// 双击的时候就可以修改单个单元格,但是我们一-旦连上数据库
// 你一修改内容,数据库没有修改,那么数据就不真实
// 所以让用户禁止直接修改内容
// 如何禁止,重写其isCellEditable():是否允许用户修改false
return false;
}
};
jt1 = new JTable(dtm);// 将储存内容的容器添加到表格中
jt1.setBounds(10, 10, 400, 270);
/* jt1. addMouseListener(new shijian_table(this));这种格式的必须写不然会没效果 */
jt1.addMouseListener(new shijian_table(this));
JScrollPane jsp = new JScrollPane(jt1);
jsp.setBounds(10, 10, 400, 100);
this.add(jsp);
this.setLayout(null);
this.setSize(500, 500);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
/*Mouse:(鼠;) 鼠标(; 青肿; 乌青块; 鼠皮色; 小哺乳动物; 胆怯的人; 不声不响的人; 浅棕灰色)*/
class shijian_table implements MouseListener {
public static JTableJieMian dt = null;
//将窗体传入过来:
public shijian_table(JTableJieMian dt) {
this.dt = dt;
}
/*Clicked:点击(;(使)作咔嗒声;突然变明了;(click的过去式和过去分词))*/
@Override
public void mouseClicked(MouseEvent arg0) {
// TODO Auto-generated method stub
/*row:一排;一行;一列;划船时间;划船路程;吵嚷;激烈的争吵;争吵;争论;吵架*/
int row = dt.jt1.getSelectedRow();// 获取点击的哪一行
String str = dt.jt1.getValueAt(row, 1).toString();
/* 1为下标,这里指的是或取第(1+1)行的文字 */
/*Message:(口信;消息;)信息(;使命;差使;电子邮件;寓意;要旨;教训;自动显示电子信息)
*
* Dialog:(参加)对话(;进行讨论;为(电影;戏剧)配上对白)*/
/*Option:选择(;期权;选择权;购买权;选择自由;选择能力)
* J:Java*/
JOptionPane.showMessageDialog(null, str);
}
@Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub
}
}







