之前,你回答:是的,我已經在Sun公司在讀JTable的教程。不,它沒有幫助我。是的,我是一個玩偶。 請不要回答該文件的參考文件。我特別感興趣的是如何通過Netbeans IDE向我的Jtable動態添加行和列。我已經有一個包含我的數據散列表的對象。我無法弄清楚我應該將該對象傳遞給哪個對象或什麼對象。謝謝你的時間!使用JTable中與NetBeans 6.1又名馬蒂斯
我有一個包含(長度l的)對象的系列(每一個對應於一個行)的載體。如何獲取該矢量對象以在JTable上顯示?
之前,你回答:是的,我已經在Sun公司在讀JTable的教程。不,它沒有幫助我。是的,我是一個玩偶。 請不要回答該文件的參考文件。我特別感興趣的是如何通過Netbeans IDE向我的Jtable動態添加行和列。我已經有一個包含我的數據散列表的對象。我無法弄清楚我應該將該對象傳遞給哪個對象或什麼對象。謝謝你的時間!使用JTable中與NetBeans 6.1又名馬蒂斯
我有一個包含(長度l的)對象的系列(每一個對應於一個行)的載體。如何獲取該矢量對象以在JTable上顯示?
一個JTable
使用TableModel
來保存數據。您的散列/數據向量需要適應才能使用;你可以寫一個TableModel
實現,使用哈希/向量爲後盾的數據,或者,如果你不會動態更新哈希/向量和需要它自動顯示,你可以簡單地複製到一切的DefaultTableModel
一個實例,並使用那。
如果使用適配器,並動態更新哈希/向量,請記住,所有的更新都必須在事件調度線程來完成。 :-)
要添加到我以前的答案,因爲它的價值,其實我已經寫了使用(主要)的表模型的ArrayList<Row>
爲後盾的數據,其中是HashMap<String, Object>
,映射列名的值。
整個事情是約1500行代碼,雖然我的代碼可能是矯枉過正你的目的,你可能沒有寫幾乎一樣多的代碼。祝一切順利!
只是爲了說明,以下是如何使用DefaultTableModel
來顯示來自HashMap
s和Vector
s的數據的示例。
以下是將數據從HashMap
轉儲到DefaultTableModel
的示例,該數據用作JTable
的TableModel
。
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;
public class JTableExample extends JFrame
{
private void makeGUI()
{
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// HashMap with some data.
HashMap<String, String> map = new HashMap<String, String>();
map.put("key1", "value1");
map.put("key2", "value2");
// Create a DefaultTableModel, which will be used as the
// model for the JTable.
DefaultTableModel model = new DefaultTableModel();
// Populate the model with data from HashMap.
model.setColumnIdentifiers(new String[] {"key", "value"});
for (String key : map.keySet())
model.addRow(new Object[] {key, map.get(key)});
// Make a JTable, using the DefaultTableModel we just made
// as its model.
JTable table = new JTable(model);
this.getContentPane().add(table);
this.setSize(200,200);
this.setLocation(200,200);
this.validate();
this.setVisible(true);
}
public static void main(String[] args)
{
new JTableExample().makeGUI();
}
}
對於使用Vector
以包括數據的一列到JTable
:
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;
public class JTableExample extends JFrame
{
private void makeGUI()
{
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Vector with data.
Vector<String> v = new Vector<String>();
v.add("first");
v.add("second");
// Create a DefaultTableModel, which will be used as the
// model for the JTable.
DefaultTableModel model = new DefaultTableModel();
// Add a column of data from Vector into the model.
model.addColumn("data", v);
// Make a JTable, using the DefaultTableModel we just made
// as its model.
JTable table = new JTable(model);
this.getContentPane().add(table);
this.setSize(200,200);
this.setLocation(200,200);
this.validate();
this.setVisible(true);
}
public static void main(String[] args)
{
new JTableExample().makeGUI();
}
}
我不得不承認的列名不使用上述實施例中,當出現(我通常使用的DefaultTableModel
的setDataVector
方法),所以如果任何人有任何建議如何使列名出現,請做:)
只是一個除了coobird的職位;獲得頭出現,我這樣做:
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;
public class JTableExample extends JFrame
{
private void makeGUI()
{
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// HashMap with some data.
HashMap<String, String> map = new HashMap<String, String>();
map.put("key1", "value1");
map.put("key2", "value2");
// Create a DefaultTableModel, which will be used as the
// model for the JTable.
DefaultTableModel model = new DefaultTableModel();
// Populate the model with data from HashMap.
model.setColumnIdentifiers(new String[] {"key", "value"});
for (String key : map.keySet())
model.addRow(new Object[] {key, map.get(key)});
// Make a JTable, using the DefaultTableModel we just made
// as its model.
JTable table = new JTable(model);
this.getContentPane().add(new JScrollPane(table));
this.setSize(200,200);
this.setLocation(200,200);
this.validate();
this.setVisible(true);
}
public static void main(String[] args)
{
new JTableExample().makeGUI();
}
}
順便說一句,您的文章是對我非常有幫助coobird,你不知道我的感激之情!
並確保您修改模型正確觸發模型更改事件的列/行,否則您將無法在表格中看到任何更新。 – 2008-09-20 00:23:55