關於jtable更新問題,請各位指教.多謝 |
缺席
|
figo
初階會員 發表:47 回覆:70 積分:28 註冊:2004-12-18 發送簡訊給我 |
這是一個jtable的操作
import java.sql.*; import java.awt.*; import javax.swing.*; import javax.swing.table.DefaultTableModel; import java.io.*; public class TT { private static String[] RowCount,ColumnCount,ColumnName;//定義陣列,行數,欄數,欄位名稱 private static int Column=0;//定義欄數 private static DefaultTableModel DTM ;//定莪一個表格式 private static JTable JT ;//定莪一個表類別 static final String DB="sun.jdbc.odbc.JdbcOdbcDriver"; static final String URL="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};" "DBQ=C:\\ABC.mdb"; /** * @param args */ public TT(){ DTM=null; JT=null; Column=0;; } public static void main(String[] args) { } public static JTable CT(String SQL) { try { //連接ado access Class.forName(DB); Connection Conn=DriverManager.getConnection(URL);//連接access Statement SetQuery=Conn.createStatement();//產生一個query ResultSet GetResult=SetQuery.executeQuery(SQL);//產生sql指令 ResultSetMetaData GetData=GetResult.getMetaData();//連收數據 // Column=GetData.getColumnCount();//得出欄數 ColumnCount=new String[Column];//設定欄數 for(int i=0;i ColumnCount[i]=GetData.getColumnName(i 1);//得出table欄數名稱 } DTM=new DefaultTableModel(ColumnCount,0);//初次設定表格式 JT=new JTable(DTM);//設定表為jtable類別 // JScrollPane s = new JScrollPane(JT);//產生一個ScrollPane // F.add(s); while (GetResult.next())//取出數據 { RowCount=new String[Column];//設定每行欄數 for(int i=0;i RowCount[i]=GetResult.getString(i 1);//取出每行每欄數據 } //行數 DTM.insertRow(DTM.getRowCount(),RowCount);//插入每行數據 } DTM.fireTableDataChanged(); JT.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); } catch(Exception e){System.out.println(e);} // F.setLocation(200,200);//設定from的位置 // F.setSize(640,480);//設定from大小 // F.setVisible(true);//顯示from return JT; } } 這是操作介面 import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.ScrollPaneConstants; import javax.swing.JTable; import javax.swing.event.*; import javax.swing.JButton; import javax.swing.JTextArea; import java.sql.*; import java.awt.event.*; import java.awt.Dimension; import java.awt.GridLayout; public class ShowTableDemo extends JPanel { public static JTextArea jTextArea= new JTextArea("select * from ABC "); public static JButton jButton=new JButton("Select"); public static TT tt=new TT(); public static JScrollPane jScrollPane ; public static JTable jTable; public static JFrame jFrame = new JFrame("ShowTableDemo"); private class do1 implements ActionListener { public void actionPerformed(ActionEvent e) { tt=new TT(); jTable=tt.CT(jTextArea.getText()); jTable.repaint(); jTable.updateUI(); repaint(); System.out.println("jButton onclick" '\n' jTextArea.getText()); } } public ShowTableDemo() { super(new GridLayout(3,1)); tt=new TT(); jTable=tt.CT("select * from ABC "); int v = ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED; int h = ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED; jScrollPane = new JScrollPane(jTable,v,h); jButton.addActionListener(new do1()); add(jTextArea); add(jScrollPane); add(jButton); } private static void createAndShowGUI() { jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ShowTableDemo newContentPane = new ShowTableDemo(); newContentPane.setOpaque(true); //content panes must be opaque jFrame.setContentPane(newContentPane); jFrame.setBounds(300,300,500,200); jFrame.setVisible(true); } public static void main(String[] args) { javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGUI(); } }); } } 我的問題是..我想動態更改sql指令令jtable更新.但我不知如何下手. 請各位指教.多謝 |
figo
初階會員 發表:47 回覆:70 積分:28 註冊:2004-12-18 發送簡訊給我 |
把操作介面更改如下就可以
import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.ScrollPaneConstants; import javax.swing.JTable; import javax.swing.event.*; import javax.swing.JButton; import javax.swing.JTextArea; import java.sql.*; import java.awt.event.*; import java.awt.Dimension; import java.awt.GridLayout; public class ShowTableDemo extends JPanel { public static JTextArea jTextArea= new JTextArea(" select * from abc "); public static JButton jButton=new JButton("Select"); public static TT tt=new TT(); public static JScrollPane jScrollPane ; public static JTable jTable; public static JFrame jFrame = new JFrame("ShowTableDemo"); public static int v = ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED; public static int h = ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED; private class do1 implements ActionListener { public void actionPerformed(ActionEvent e) { tt=new TT(); jTable=tt.CT(jTextArea.getText()); jTable.validate(); jFrame.getContentPane().remove(1); jScrollPane = new JScrollPane(jTable,v,h); jFrame.getContentPane().add(jScrollPane,1); jFrame.validate(); System.out.println("jButton onclick" '\n' jTextArea.getText()); } } public ShowTableDemo() { super(new GridLayout(3,1)); tt=new TT(); jTable=tt.CT("select * from abc "); jScrollPane = new JScrollPane(jTable,v,h); jButton.addActionListener(new do1()); add(jTextArea); add(jScrollPane); add(jButton); } private static void createAndShowGUI() { jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ShowTableDemo newContentPane = new ShowTableDemo(); newContentPane.setOpaque(true); //content panes must be opaque jFrame.setContentPane(newContentPane); jFrame.setBounds(300,300,500,200); jFrame.setVisible(true); } public static void main(String[] args) { javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGUI(); } }); } } 給同我一樣的新手參考..望高手多多指教 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |