JTable的有一個方法是getTableModel().返回提供此 JTable 所顯示數據的 TableModel.
TableModel是一個介面,實際上返回的是DefaultTableModel類,它實現了TableModel介面。這個類中有一個方法是void addRow(Object[] rowData)。它就是將一行插入到JTable中。
不過JTable的setValueAt方法應該就可以實現。
樓主可以定義個一個線程類來完成。
比如你需要插入100行數據,可以在線程的run方法中寫一個循環,在循環中寫兩行代碼,一行是setValueAt,一行是刷新JTable,然後再讓線程睡眠,這樣一行一行的顯示的效果就可以出來了!
或者樓主可以用進度條來打發等待的時間,就像打開netbeans的那個進度條一樣,這個可以用JProgressBar類。樓主可以去查看一下源代碼。如果樓主還是沒有頭緒,我乾脆就寫個例子得了!
關於組件的添加或者類似設置窗口的大小,布局管理器等我就不做解釋了!
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import javax.swing.table.*;
public class Test extends JFrame implements ActionListener
{
private JButton button1;
private JButton button2;
private JButton button3;
private DefaultTableModel model;
private JTable table;
private JProgressBar bar;
private JScrollPane scrollpane;
private JPanel panel;
public Test()
{
button1=new JButton("演示1");
button2=new JButton("演示2");
button3=new JButton("清空");
panel=new JPanel();
bar=new JProgressBar(0,100);
String[] colnames={"數據一","數據二"};
model=new DefaultTableModel(colnames,100);
table=new JTable(model);
scrollpane=new JScrollPane(table);
panel.setLayout(new FlowLayout());
button1.addActionListener(this);
button2.addActionListener(this);
button3.addActionListener(this);
panel.add(button1);
panel.add(button2);
panel.add(button3);
panel.add(bar);
this.setLayout(new GridLayout(2,1));
this.setSize(500,600);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.add(scrollpane);
this.add(panel);
}
public void actionPerformed(ActionEvent e)
{
String command=e.getActionCommand();
if(command.equals("演示1"))
{
ShowModel show=new ShowModel(true);
Thread thread=new Thread(show);
thread.start();
}
else if(command.equals("演示2"))
{
ShowModel show=new ShowModel(false);
Thread thread=new Thread(show);
thread.start();
}
else
{
String[] colnames={"數據一","數據二"};
model=new DefaultTableModel(colnames,100);
table.setModel(model);
}
}
private class ShowModel implements Runnable
{
private boolean type;//當type為true時,則說明是「演示1」的線程,false則相反
public ShowModel(boolean type)
{
this.type=type;
}
public void run()
{
if(type)//這個就是讓線程睡眠,並且設置JTable的值
{
try{
for(int i=0;i<100;i++)
{
Test.this.table.setValueAt(String.valueOf(i),i,0);
Test.this.table.setValueAt(String.valueOf(i),i,1);
Thread.sleep(100);
}
}catch(Exception e)
{
e.printStackTrace();
}
}
else//這個就是進度條的演示
{
try{
Test.this.table.setVisible(false);
for(int i=0;i<100;i++)
{
Test.this.table.setValueAt(String.valueOf(i),i,0);
Test.this.table.setValueAt(String.valueOf(i),i,1);
Test.this.bar.setValue(i+1);
Test.this.bar.setString(String.valueOf(i+1)+"%");
Thread.sleep(40);
if(i==99)
{
Test.this.table.setVisible(true);
JOptionPane.showMessageDialog(Test.this,"OK");
Test.this.bar.setValue(0);
}
}
}catch(Exception e)
{
e.printStackTrace();
}
}
}
}
public static void main(String[] args)
{
Test test=new Test();
test.setVisible(true);
}
}
❷ 如何在NetBeans中設置資料庫連接池
以往要設置資料庫連接池,需要藉助於第三方軟體。但現在NetBeans所帶的Tomcat 5.5.7及Sun Application Server 8均可以直接設置。下面談談如何在Tomcat 5.5.7下設置。
1. 下載資料庫的專用連接驅動,並將其復制到C:Program Filesetbeans-4.1entERPrise1jakarta-tomcat-5.5.7commonlib文件夾下面。
假設所用資料庫是Sybase的Adaptive Server Anywhere,從Sybase官方站點下載JConnect-6_0,從中抽取出jconn3這個驅動,復制到上述文件夾下。
2. 啟動Tomcat,在IE輸入http://localhost:8084/admin/,以管理員身份登錄管理。用戶登錄的方法可參考第5樓。點擊Resources下的Data Sources,在右邊Data Source Actions的下拉框中選Create New Data Source,按下表示範填寫:
JNDI Name: sybase/poolDB /* 根據喜好填 */
Data Source URL: JDBC:sybase:Tds:<localhost>:<埠號>
/* 資料庫的地址,此為jconn3的形式,埠號需查詢確認,但一般都是固定的,除非自己更改 */
JDBC Driver Class: com.sybase.jdbc3.jdbc.SybDriver /* jconn3的驅動 */
User Name: dba/* 用戶名,默認為dba */
Password: *** /* 密碼,默認為sql */
Max. Active Connections: 4/* 最大活動連接數 */
Max. Ide Connections: 2 /* 最大空閑連接數 */
Max. Wait for Connecton: 5000 /* 等待連接的最大秒數 */
Validation Query: /* 驗證字元串,可不填 */
按"Save",再按"Commit Changes",Tomcat在後台將此變化保存到server.XML文件中。"Commit Changes"是最容易忘記的,小心。
3. 以下均轉入NetBeans環境中設置。在context.xml修改的內容:
<Context path="/Matrix">
<ResourceLink global="sybase/poolDB" name="sybase/poolDB" type="Javax.sql.DataSource"/>
</Context>
"/Matrix"為此Web應用的根地址,表現為http://localhost:8084/Matrix。
4. 在web.xml中加入:
<resource-ref>
<description>Sybase Database Connection Pool</description>
<res-ref-name>sybase/poolDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
5. 好了,可以使用連接池了。以下代碼為在JSP文件中使用JSTL標簽庫的範例。
<sql:query var="queryresults" dataSource="sybase/poolDB">
SELECT * FROM customer
</sql:query>
❸ 在netbeans中的一個字元串「0002」,資料庫中顯示為「2」
這一句你寫錯了,應該是
int i1=s.executeUpdate("update bar set barleader= '"+str2+"' where barid= '"+str1+"'");
改了之後你再試一試。