JTable的用法收藏版.doc_第1頁(yè)
JTable的用法收藏版.doc_第2頁(yè)
JTable的用法收藏版.doc_第3頁(yè)
JTable的用法收藏版.doc_第4頁(yè)
JTable的用法收藏版.doc_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

JTable的用法收藏版在使用JTable以前,我們先看一下它的構(gòu)造函數(shù)有哪些, 以及應(yīng)該如何使用:JTabel構(gòu)造函數(shù):JTable():建立一個(gè)新的JTables,并使用系統(tǒng)默認(rèn)的Model.JTable(int numRows,int numColumns):建立一個(gè)具有numRows行,numColumns列的空表格,使用的是DefaultTableModel.JTable(Object rowData,Object columnNames):建立一個(gè)顯示二維數(shù)組數(shù)據(jù)的表格,且可以顯示列的名稱。JTable(TableModel dm):建立一個(gè)JTable,有默認(rèn)的字段模式以及選擇模式,并設(shè)置數(shù)據(jù)模式。JTable(TableModel dm,TableColumnModel cm):建立一個(gè)JTable,設(shè)置數(shù)據(jù)模式與字段模式,并有默認(rèn)的選擇模式。JTable(TableModel dm,TableColumnModel cm,ListSelectionModel sm):建立一個(gè)JTable,設(shè)置數(shù)據(jù)模式、字段模式、與選擇模式。JTable(Vector rowData,Vector columnNames):建立一個(gè)以Vector為輸入來(lái)源的數(shù)據(jù)表格,可顯示行的名稱。我們先以Array構(gòu)造方式,說(shuō)明如何利用JTable來(lái)建立一個(gè)簡(jiǎn)單的表格:1 import javax.swing.*;2 import java.awt.*;3 import java.awt.event.*;4 import java.util.*;5 public class SimpleTable6 public SimpleTable()7 JFrame f=new JFrame();8 Object playerInfo=9 阿呆,new Integer(66),new Integer(32),new Integer(98),new Boolean(false),10 阿呆,new Integer(82),new Integer(69),new Integer(128),new Boolean(true),11 ; 12 String Names=姓名,語(yǔ)文,數(shù)學(xué),總分,及格;13 JTable table=new JTable(playerInfo,Names);14 table.setPreferredScrollableViewportSize(new Dimension(550,30);15 JScrollPane scrollPane=new JScrollPane(table);16 f.getContentPane().add(scrollPane,BorderLayout.CENTER);17 f.setTitle(Simple Table);18 f.pack();19 f.show();20 f.addWindowListener(new WindowAdapter() 21 public void windowClosing(WindowEvent e) 22 System.exit(0);23 24 );24 25 public static void main(String args)26 SimpleTable b=new SimpleTable();27 28 表格由兩部份組成:分別是行標(biāo)題(Column Header)與行對(duì)象(Column Object).利用JTable所提供的getTableHeader()方法取得行標(biāo)題。在這個(gè)例子中,我們將JTable放在JScrollPane中,這種做法可以將Column Header與Colmn Object完整的顯示出來(lái),因?yàn)镴ScrollPane會(huì)自動(dòng)取得Column Header.但如果文壇讀者將上面第15行去掉并修改第16行:f.getContentPane().add(table,BorderLayout.CENTER); 則運(yùn)行結(jié)果你會(huì)發(fā)現(xiàn)Column Header不見(jiàn)了。如果你不想用JScrollPane,要解決這個(gè)問(wèn)題,你必須將程序修改如下:JTable table=new JTable(p,n);table.setPreferredScrollableViewportSize(new Dimension(550,30);f.getContentPane().add(table.getTableHeader(),BorderLayout.NORTH);f.getContentPane().add(table,BorderLayout.CENTER);運(yùn)行結(jié)果就會(huì)跟之前一樣有行標(biāo)題了.上面的運(yùn)行結(jié)果就會(huì)跟發(fā)現(xiàn),每個(gè)字段的寬度都是一樣的,除非你自行拉曳某個(gè)列寬。若我們想一開(kāi)始就設(shè)置列寬的值,可以利用TableColumn類(lèi)所提供的setPreferredWidth()方法來(lái)設(shè)置,并可利用JTable類(lèi)所提供的setAutoResizeMode()方法來(lái)設(shè)置調(diào)整某個(gè)列寬時(shí)其他列寬的變化情況,我們看下面這個(gè)例子:import javax.swing.*;import javax.swing.table.*;import java.awt.*;import java.awt.event.*;import java.util.*;public class SimpleTable2public SimpleTable2()JFrame f=new JFrame();Object p=阿呆,new Integer(66),new Integer(32),new Integer(98),new Boolean(false),new Boolean(false),阿呆,new Integer(82),new Integer(69),new Integer(128),new Boolean(true),new Boolean(false),; String n=姓名,語(yǔ)文,數(shù)學(xué),總分,及格,作弊;TableColumn column=null;JTable table=new JTable(p,n);table.setPreferredScrollableViewportSize(new Dimension(550,30);table.setAutoResizeMode(JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);for (int i=0;iAbstractTableModel-extends-DefaultTableModel8-3:AbstractTableModel:java提供的AbstractTableModel是一個(gè)抽象類(lèi),這個(gè)類(lèi)幫我們實(shí)現(xiàn)大部份的TableModel方法,除了getRowCount(),getColumnCount(),getValueAt()這三個(gè)方法外.因此我們的主要任務(wù)就是去實(shí)現(xiàn)這三個(gè)方法.利用這個(gè)抽象類(lèi)就可以設(shè)計(jì)出不同格式的表格.我們來(lái)看看它所提供的方法:AbstractTableModel方法:void addTableModelListener(TableModelListener l):使表格具有處理TableModelEvent的能力.當(dāng)表格的Table Model有所變化時(shí),會(huì)發(fā)出TableModelEvent事件信息.int findColumn(String columnName):尋找在行名稱中是否含有columnName這個(gè)項(xiàng)目.若有,則返回其所在行的位置;反之則返回-1表示未找到.void fireTableCellUpdated(int row, int column):通知所有的Listener在這個(gè)表格中的(row,column)字段的內(nèi)容已經(jīng)改變了.void fireTableChanged(TableModelEvent e):將所收的事件通知傳送給所有在這個(gè)table model中注冊(cè)過(guò)的TableModelListeners.void fireTableDataChanged():通知所有的listener在這個(gè)表格中列的內(nèi)容已經(jīng)改變了.列的數(shù)目可能已經(jīng)改變了,因此JTable可能需要重新顯示此表格的結(jié)構(gòu).void fireTableRowsDeleted(int firstRow, int lastRow):通知所有的listener在這個(gè)表格中第firstrow行至lastrow列已經(jīng)被刪除了.void fireTableRowsUpdated(int firstRow, int lastRow):通知所有的listener在這個(gè)表格中第firstrow行至lastrow列已經(jīng)被修改了.void fireTableRowsInserted(int firstRow, int lastRow):通知所有的listener在這個(gè)表格中第firstrow行至lastrow列已經(jīng)被加入了.void fireTableStructureChanged():通知所有的listener在這個(gè)表格的結(jié)構(gòu)已經(jīng)改變了.行的數(shù)目,名稱以及數(shù)據(jù)類(lèi)型都可能已經(jīng)改變了.Class getColumnClass(int columnIndex):返回字段數(shù)據(jù)類(lèi)型的類(lèi)名稱.String getColumnName(int column):若沒(méi)有設(shè)置列標(biāo)題則返回默認(rèn)值,依次為A,B,C,.Z,AA,AB,.;若無(wú)此column,則返回一個(gè)空的String.Public EventListener getListeners(Class listenerType):返回所有在這個(gè)table model所建立的listener中符合listenerType的listener,并以數(shù)組形式返回.boolean isCellEditable(int rowIndex, int columnIndex):返回所有在這個(gè)table model所建立的listener中符合listenerType形式的listener,并以數(shù)組形式返回.void removeTableModelListener(TableModelListener l):從TableModelListener中移除一個(gè)listener.void setValueAt(Object aValue, int rowIndex, int columnIndex):設(shè)置某個(gè)cell(rowIndex,columnIndex)的值.若你仔細(xì)比較TableModel所定義的方法與上述AbstractTableModel所提供的方法,你可以發(fā)現(xiàn),AbstractTableModel抽象類(lèi)并沒(méi)有實(shí)現(xiàn)getRowCount(),getColumnCount(),getValueAt()這三個(gè)方法,這也就是為什么我們要去實(shí)現(xiàn)這三個(gè)方法的原因.下面我們來(lái)看如何使用AbstractTableModel來(lái)實(shí)作出自己想要的表格模式.范例:TableModel1.javaimport javax.swing.table.AbstractTableModel;import javax.swing.*;import java.awt.*;import java.awt.event.*;public class TableModel1public TableModel1() JFrame f = new JFrame();MyTable mt=new MyTable();JTable t=new JTable(mt);t.setPreferredScrollableViewportSize(new Dimension(550, 30);JScrollPane s = new JScrollPane(t);f.getContentPane().add(s, BorderLayout.CENTER);f.setTitle(JTable1);f.pack();f.setVisible(true);f.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0););public static void main(String args) new TableModel1();class MyTable extends AbstractTableModelObject p = 阿呆, new Integer(66), new Integer(32), new Integer(98), new Boolean(false),new Boolean(false),阿瓜, new Integer(85), new Integer(69), new Integer(154), new Boolean(true),new Boolean(false), ;String n = 姓名, 語(yǔ)文,數(shù)學(xué),總分,及格,作弊;public int getColumnCount() return n.length;public int getRowCount() return p.length;public String getColumnName(int col) return ncol;public Object getValueAt(int row, int col) return prowcol;public Class getColumnClass(int c) return getValueAt(0, c).getClass();上例中表格內(nèi)的數(shù)據(jù)類(lèi)型不論是String,int或是Boolean類(lèi)型,都均以string的類(lèi)型顯示.例如在及格的字段中,原本的數(shù)據(jù)是以Boolean類(lèi)型來(lái)表示,但顯示在JTable上時(shí)便轉(zhuǎn)換成字符串形式,若想要使表格能顯示出不同的數(shù)據(jù)類(lèi)型,我們要在MyTable中Override寫(xiě)getColumnClass()方法,這個(gè)方法可以讓我們分辨出表格中每一行的數(shù)據(jù)類(lèi)型,并將此類(lèi)型作適當(dāng)?shù)娘@示:public Class getColumnClass(int c) return getValueAt(0, c).getClass();這樣作弊會(huì)以Check Box顯示,數(shù)據(jù)類(lèi)型一律靠右顯示,String類(lèi)型一律靠左顯示.TableModel2.javaimport javax.swing.table.AbstractTableModel;import javax.swing.*;import java.awt.*;import java.awt.event.*;public class TableModel2 implements ActionListenerJTable t = null;public TableModel2() JFrame f = new JFrame(DataModel);JButton b1 = new JButton(數(shù)學(xué)老師);b1.addActionListener(this);JButton b2 = new JButton(學(xué)生阿呆);b2.addActionListener(this);JPanel panel = new JPanel();panel.add(b1);panel.add(b2);t=new JTable(new MyTable(1);t.setPreferredScrollableViewportSize(new Dimension(550, 30);JScrollPane s = new JScrollPane(t);f.getContentPane().add(panel, BorderLayout.NORTH);f.getContentPane().add(s, BorderLayout.CENTER);f.pack();f.setVisible(true);f.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0););public void actionPerformed(ActionEvent e)if (e.getActionCommand().equals(學(xué)生阿呆)t.setModel(new MyTable(1);if (e.getActionCommand().equals(數(shù)學(xué)老師)t.setModel(new MyTable(2);t.revalidate();public static void main(String args) new TableModel2();class MyTable extends AbstractTableModelObject p1 = 阿呆, 1234,new Integer(66), new Integer(50), new Integer(116), new Boolean(false),new Boolean(false);String n1 = 姓名,學(xué)號(hào),語(yǔ)文,數(shù)學(xué),總分,及格,作弊;Object p2 = 阿呆, 1234,new Integer(50), new Boolean(false),new Boolean(false),01234,阿瓜, 1235,new Integer(75), new Boolean(true),new Boolean(false),05678;String n2 = 姓名,學(xué)號(hào),數(shù)學(xué),及格,作弊,電話;int model = 1;public MyTable(int i)model = i;public int getColumnCount() if(model =1)return n1.length;elsereturn n2.length;public int getRowCount() if(model =1)return p1.length;elsereturn p2.length;public String getColumnName(int col) if(model =1)return n1col;elsereturn n2col;public Object getValueAt(int row, int col) if(model = 1)return p1rowcol;elsereturn p2rowcol;public Class getColumnClass(int c) return getValueAt(0, c).getClass();8-4:TableColumnModel:TableColumnModel本身是一個(gè)Interface,里面定義了許多與表格的列(行)有關(guān)的方法,例如增加列,刪除列,設(shè)置與取得列的相關(guān)信息.通常我們不會(huì)直接實(shí)現(xiàn)TableColumnModel界面,而是會(huì)利用JTable的getColumnModel()方法取得TableColumnModel對(duì)象,再利用此對(duì)象對(duì)字段做設(shè)置.舉例來(lái)說(shuō),如果我們想設(shè)計(jì)的表格是包括有下拉式列表的Combo Box,我們就能利用TableColumnModel來(lái)達(dá)到這樣的效果.我們先看看下面的例子:import javax.swing.table.AbstractTableModel;import javax.swing.*;import java.awt.*;import java.awt.event.*;public class ColumnModelTestpublic ColumnModelTest() JFrame f = new JFrame();/*由于我們的MyTable類(lèi)繼承了AbstractTableModel并且實(shí)作了getColmunCount(),getRowCount(),getValueAt()方法.因此我們可以通*過(guò)MyTable來(lái)產(chǎn)生TableModel的實(shí)體.*/ MyTable mt=new MyTable();JTable t=new JTable(mt);/我們利用MyTable來(lái)建立JTable.JComboBox c = new JComboBox();/建立一個(gè)JComboBox的對(duì)象.c.addItem(Taipei);/我們?cè)谛陆⒌腏ComboBox對(duì)象里新增三個(gè)項(xiàng)目.c.addItem(ChiaYi);c.addItem(HsinChu);/*我們利用JTable所提供的getTableColumnModel()方法取得TableColumnModel對(duì)象,再由TableColumnModel類(lèi)所提供的getColumn()方*法取得TableColumn對(duì)象,TableColumn類(lèi)可針對(duì)表格中的每一行做具體的設(shè)置,例如設(shè)置字段的寬度,某行的標(biāo)頭,設(shè)置輸入較復(fù)雜的*數(shù)據(jù)類(lèi)型等等.在這里,我們利用TableColumn類(lèi)所提供的setCellEditor()方法,將JComboBox作為第二行的默認(rèn)編輯組件.*/t.getColumnModel().getColumn(1).setCellEditor(new DefaultCellEditor(c);t.setPreferredScrollableViewportSize(new Dimension(550, 30);JScrollPane s = new JScrollPane(t);f.getContentPane().add(s, BorderLayout.CENTER);f.setTitle(ColumnModelTest);f.pack();f.setVisible(true);f.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0););public static void main(String args) new ColumnModelTest();class MyTable extends AbstractTableModelObject p = 阿呆, Taipei,new Integer(66), new Integer(32), new Integer(98), new Boolean(false),new Boolean(false),阿瓜, ChiaYi,new Integer(85), new Integer(69), new Integer(154), new Boolean(true),new Boolean(false), ;String n = 姓名, 居住地,語(yǔ)文,數(shù)學(xué),總分,及格, 作弊;public int getColumnCount() return n.length;public int getRowCount() return p.length;public String getColumnName(int col) return ncol;public Object getValueAt(int row, int col) return prowcol;public Class getColumnClass(int c) return getValueAt(0, c).getClass();/*public boolean isCellEditable(int rowIndex, int columnIndex) return true; public void setValueAt(Object value, int row, int col) prowcol = value;fireTableCellUpdated(row, col);*/讀者運(yùn)行此程序可以發(fā)現(xiàn),利用繼承AbstractTableModel抽象類(lèi)所產(chǎn)生的JTable的內(nèi)容是不能被修改的.那如果想要讓用戶可以修改表格中的某一個(gè)字段,例如勾選Check Box或是直接修改某個(gè)字段的數(shù)字,該怎么做呢?很簡(jiǎn)單,只要我們?cè)诜独械腗yTable類(lèi)中覆寫(xiě)AbstractTableModel抽象類(lèi)中的isCellEditable()方法即可.下面即是isCellEditable()的實(shí)作:public boolean isCellEditable(int rowIndex,int columnIndex)return true;在isCellEditable()中,我們只有一行簡(jiǎn)單的程序代碼:return true,意思是將我們表格內(nèi)的每個(gè)cell都變成可修改.但僅僅修改這個(gè)程序代碼還不行,你可以發(fā)現(xiàn)雖然表格現(xiàn)在變成了可以修改了,但更改完之后按下Enter鍵,內(nèi)容馬上恢復(fù)成原有的值!解決的方法是覆寫(xiě)AbstractTableModel抽象類(lèi)中的setValueAt()方法,這個(gè)方法主要是讓我們將改過(guò)的值存入表格中,如下所示:public void setValueAt(Object value,int row,int col)prowcol=value;fireTableCellUpdated(row,col);其中value為我們所更改的值,我們將value存入prowcol中,并且調(diào)用firTableCellUpdated()函數(shù)來(lái)告訴我們的系統(tǒng)表格已經(jīng)做了更改了,關(guān)于這一部份,我們后面會(huì)再對(duì)事件處理作詳細(xì)地介紹,在此范例中有沒(méi)有加入fireTableCellUpdated()方法對(duì)運(yùn)行結(jié)果不會(huì)造成影響.8-5:SelectionModel表格的選擇模式是依據(jù)我們前面所講的ListSelectionModel而來(lái),因此它的操作模式與事件處理跟JList沒(méi)什么分別!我們稍微復(fù)習(xí)一下ListSelectionModel這個(gè)Interface,它包含了3個(gè)常數(shù)值,如下:static int SINGLE_SELECTIONstatic int SINGLE_INTERVAL_SELECTIONstatic int MULTIPLE_INTERVAL_SELECTION分別可讓用戶作單一選擇,連續(xù)區(qū)間選擇與多重選擇.當(dāng)用戶作后面兩個(gè)模式的操作時(shí),應(yīng)配合Shift鍵或Ctrl鍵.要使用ListSelectionModel可利用JTable的getSelectionModel()方法取得ListSelectionModel對(duì)象,再利用ListSelectionModel界面所定義的setSelectionModel()來(lái)設(shè)置選擇模式.如同JList一般,當(dāng)用戶對(duì)表格作數(shù)據(jù)域位的選取時(shí)會(huì)產(chǎn)生ListSelectionEvent事件,要處理這個(gè)事件就必須實(shí)現(xiàn)ListSelectionListener這個(gè)界面,此界面定義了一個(gè)方法,那就是valueChanged().我們來(lái)看下面的例子,用戶可在按鈕上選擇哪種選擇模式,當(dāng)用戶選取表格數(shù)據(jù)時(shí),程序會(huì)將用戶選取的數(shù)據(jù)顯示在表格下面的JLabel中.SelectionModelDemo.javaimport java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;public class SelectionModelDemo implements ActionListener,ListSelectionListenerJTable table=null;ListSelectionModel selectionMode=null;JLabel label=null;/顯示用戶選取表格之用public SelectionModelDemo()JFrame f=new JFrame();String name=字段1,字段2,字段3,字段4,字段5;String data=new String55;int value=1;for(int i=0;idata.length;i ) for (int j=0;jdata.length;j ) dataj=String.valueOf(value ); table=new JTable(data,name);table.setPreferredScrollableViewportSize(new Dimension(400,80);table.setCellSelectionEnabled(true);/使得表格的選取是以cell為單位,而不是以列為單位.若你沒(méi)有寫(xiě)此行,則在選取表格數(shù)/據(jù)時(shí)以整列為單位.selectionMode=table.getSelectionModel();/取得table的ListSelectionModel.selectionMode.addListSelectionListener(this);JScrollPane s=new JScrollPane(table);JPanel panel=new JPanel();JButton b=new JButton(單一選擇);panel.add(b);b.addActionListener(this);b=new JButton(連續(xù)區(qū)間選擇);panel.add(b);b.addActionListener(this);b=new JButton(多重選擇); panel.add(b);b.addActionListener(this);label=new JLabel(你選取:);Container contentPane=f.getContentPane();contentPane.add(panel,BorderLayout.NORTH);contentPane.add(s,BorderLayout.CENTER);contentPane.add(label,BorderLayout.SOUTH);f.setTitle(SelectionModelDemo);f.pack();f.setVisible(true);f.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0);); /*處理按鈕事件,利用ListSelectionModel界面所定義的setSelectionMode()方法來(lái)設(shè)置表格選取模式.*/public void actionPerformed(ActionEvent e)if (e.getActionCommand().equals(單一選擇)selectionMode.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);if (e.getActionCommand().equals(連續(xù)區(qū)間選擇)selectionMode.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);if (e.getActionCommand().equals(多重選擇)selectionMode.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);table.revalidate(); /*當(dāng)用戶選取表格數(shù)據(jù)時(shí)會(huì)觸發(fā)ListSelectionEvent,我們實(shí)現(xiàn)ListSelectionListener界面來(lái)處理這一事件.ListSelectionListener界*面只定義一個(gè)方法,那就是valueChanged().*/ public void valueChanged(ListSelectionEvent el)String tempString=;/JTable的getSelectedRows()與getSelectedColumns()方法會(huì)返回已選取表格cell的index Array數(shù)據(jù).int rows=table.getSelectedRows();int columns=table.getSelectedColumns();/JTable的getValueAt()方法會(huì)返回某行的cell數(shù)據(jù),返回值是Object數(shù)據(jù)類(lèi)型,因此我們要自行轉(zhuǎn)成String數(shù)據(jù)類(lèi)型.for (int i=0;irows.length;i )for (int j=0;jcolumns.length;j )tempString = tempString (String)table.getValueAt(rows, columnsj); label.setText(你選取: tempString);public static void main(String args)new SelectionModelDemo();說(shuō)明:在此范例中,我們要處理ActionEvent與ListSelectionEvent,因此在程序中我們要實(shí)現(xiàn)ActionListenrer與ListSelectionListener界面,而ListSelectionEvent是屬于Swing事件,因此程序中我們要import javax.swing.event package進(jìn)來(lái).8-6:DefaultTableModel我們?cè)岬竭^(guò)DefaultTableModel類(lèi),并說(shuō)明了此類(lèi)是繼承AbstractTableModel抽象類(lèi)而來(lái),且實(shí)現(xiàn)了getColumnCount(),getRowCount()與getValueAt()3個(gè)方法.因此在實(shí)際的使用上,DefaultTableModel比AbstractTableModel要來(lái)得簡(jiǎn)單許多,也較常被拿來(lái)使用.DefaultTableModel內(nèi)部使用Vector來(lái)使用表格的數(shù)據(jù),若佻所要顯示的表格格式是比較單純的變化,筆者建議使用Default

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論