Java:swing圖書管理系統(tǒng)(詳細(xì)個(gè)人注釋版)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(模型; )模式(; 樣式; 模范; 時(shí)裝模特兒; 設(shè)計(jì); 型號(hào); 典型; 榜樣; 原型)*/
/*DefaultTableModel(不履行; 違約; 拖欠; 未到庭;) 默認(rèn)值*/
/*DefaultTableModel是 TableModel 的一個(gè)實(shí)現(xiàn),
* 它使用一個(gè) Vector 來(lái)存儲(chǔ)單元格的值對(duì)象,該 Vector 由多個(gè) Vector 組成。
通過(guò)DefaultTableModel可以對(duì)表格進(jìn)行數(shù)據(jù)的增刪改,
比較常用的。*/
static DefaultTableModel dtm = null;// 儲(chǔ)存內(nèi)容的容器
/*
* 1.聲明表格 2.聲明數(shù)據(jù)源 (沒(méi)有數(shù)據(jù)庫(kù),所以是模擬數(shù)據(jù)源) 3. 將每個(gè)集合的內(nèi)容添加到大集合(保存數(shù)據(jù)的集合)中 4.聲明一個(gè)儲(chǔ)存內(nèi)容的容器
* (defaultTableModel) 5.將內(nèi)容和標(biāo)題添加到儲(chǔ)存內(nèi)容的容器里 6.將儲(chǔ)存內(nèi)容的容器添加到JTable中
* 7.標(biāo)題不見(jiàn)了,內(nèi)容假如比較多,加個(gè)滾動(dòng)條
*/
/*Table(桌子; 列表; 一覽表; )表格(; 平面; 談判桌; 飯菜; 乘法表; 名次表)*/
/*JTable 用來(lái)顯示和編輯常規(guī)二維單元表*/
static JTable jt1 = null;// 聲明一個(gè)表格
// 這個(gè)集合用來(lái)存放內(nèi)容的標(biāo)題
/*在相對(duì)于ArrayList來(lái)說(shuō),Vector線程是安全的,也就是說(shuō)是同步的
創(chuàng)建了一個(gè)向量類的對(duì)象后,可以往其中隨意地插入不同的類的對(duì)象,既不需顧及類型也不需預(yù)先選定向量的容量,并可方便地進(jìn)行查找。
對(duì)于預(yù)先不知或不愿預(yù)先定義數(shù)組大小,并需頻繁進(jìn)行查找、插入和刪除工作的情況,可以考慮使用向量類。
Java.util.Vector提供了向量(Vector)類以實(shí)現(xiàn)類似動(dòng)態(tài)數(shù)組的功能。*/
/*Object 是 Java 類庫(kù)中的一個(gè)特殊類,也是所有類的父類。也就是說(shuō),Java 允許把任何類型的對(duì)象賦給 Object 類型的變量。
* 當(dāng)一個(gè)類被定義后,如果沒(méi)有指定繼承的父類,那么默認(rèn)父類就是 Object 類。*/
Vector<Object> v = new Vector<Object>();
// 存放具體的內(nèi)容的時(shí)候,因?yàn)閮?nèi)容是多行多列,所以我們使用一個(gè)集合的集合存儲(chǔ)
/*Object:(物體; 東西; )對(duì)象(; 目標(biāo); 目的; 宗旨; 客體; 賓語(yǔ))*/
Vector<Vector<Object>> v_neirong = new Vector<Vector<Object>>();
// 現(xiàn)在沒(méi)有數(shù)據(jù)庫(kù),所以數(shù)據(jù)我們使用模擬數(shù)據(jù)庫(kù)
// List ArrayList Vector(和List一樣。對(duì)于JTable的操作的時(shí)候只能使用這個(gè)集合)
// set HashSet
// Map HashMap
public JTableJieMian() {
// 布局方式、大小、居中、釋放資源、是否顯示
this.setTitle("豆瓣TOP評(píng)分9分以上書單");
v.add("編號(hào)");
v.add("圖書名稱");
v.add("價(jià)格");
v.add("出版社");
Vector<Object> v1 = new Vector<Object>();
v1.add(1);
v1.add("小王子");
v1.add("11.88元");
v1.add("人民文學(xué)出版社");
Vector<Object> v2 = new Vector<Object>();
v2.add(2);
v2.add("霍亂時(shí)期的愛(ài)情");
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("百年孤獨(dú)");
v6.add("19.00元");
v6.add("南海出版公司");
Vector<Object> v7 = new Vector<Object>();
v7.add(7);
v7.add("平凡的世界");
v7.add("20.00元");
v7.add("人民文學(xué)出版社");
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);// 將內(nèi)容儲(chǔ)存到容器中
dtm = new DefaultTableModel(v_neirong, v) {
@Override
public boolean isCellEditable(int row, int column) {
// 雙擊的時(shí)候就可以修改單個(gè)單元格,但是我們一-旦連上數(shù)據(jù)庫(kù)
// 你一修改內(nèi)容,數(shù)據(jù)庫(kù)沒(méi)有修改,那么數(shù)據(jù)就不真實(shí)
// 所以讓用戶禁止直接修改內(nèi)容
// 如何禁止,重寫其isCellEditable():是否允許用戶修改false
return false;
}
};
jt1 = new JTable(dtm);// 將儲(chǔ)存內(nèi)容的容器添加到表格中
jt1.setBounds(10, 10, 400, 270);
/* jt1. addMouseListener(new shijian_table(this));這種格式的必須寫不然會(huì)沒(méi)效果 */
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:(鼠;) 鼠標(biāo)(; 青腫; 烏青塊; 鼠皮色; 小哺乳動(dòng)物; 膽怯的人; 不聲不響的人; 淺棕灰色)*/
class shijian_table implements MouseListener {
public static JTableJieMian dt = null;
//將窗體傳入過(guò)來(lái):
public shijian_table(JTableJieMian dt) {
this.dt = dt;
}
/*Clicked:點(diǎn)擊(;(使)作咔嗒聲;突然變明了;(click的過(guò)去式和過(guò)去分詞))*/
@Override
public void mouseClicked(MouseEvent arg0) {
// TODO Auto-generated method stub
/*row:一排;一行;一列;劃船時(shí)間;劃船路程;吵嚷;激烈的爭(zhēng)吵;爭(zhēng)吵;爭(zhēng)論;吵架*/
int row = dt.jt1.getSelectedRow();// 獲取點(diǎn)擊的哪一行
String str = dt.jt1.getValueAt(row, 1).toString();
/* 1為下標(biāo),這里指的是或取第(1+1)行的文字 */
/*Message:(口信;消息;)信息(;使命;差使;電子郵件;寓意;要旨;教訓(xùn);自動(dòng)顯示電子信息)
*?
* Dialog:(參加)對(duì)話(;進(jìn)行討論;為(電影;戲劇)配上對(duì)白)*/
/*Option:選擇(;期權(quán);選擇權(quán);購(gòu)買權(quán);選擇自由;選擇能力)
* 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
}
}







