2 回答

TA貢獻(xiàn)1783條經(jīng)驗 獲得超4個贊
您可以在 JTable 實例上調(diào)用 setModel()。
例如,您只需要從其他源傳遞模型即可。喜歡:
setModel(simeOtherObject.generateTableModel());
換句話說:另一個類可以生成一個模型對象。或者,它提供了一些“中性”數(shù)據(jù)(如列表),然后一些幫助程序代碼將其轉(zhuǎn)換為 Model 對象。
老實說,讓多個類以這種方式協(xié)同工作是基本的Java知識。如果這已經(jīng)使您負(fù)擔(dān)過重,那么在嘗試創(chuàng)建復(fù)雜的GUI應(yīng)用程序之前,您應(yīng)該退后一步并學(xué)習(xí)更多基礎(chǔ)知識。

TA貢獻(xiàn)1806條經(jīng)驗 獲得超8個贊
有多種方法可以在 中添加/刪除數(shù)據(jù)。下面的程序演示了 和 的用法。JTableaddRow()setModel()
請注意,方法僅在 中存在。因此,當(dāng)您使用其他表模型時,必須使用不同的方法。addRow()DefaultTableModel
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.BorderLayout;
import java.awt.event.*;
public class PopulateTable
{
public static void main(String[] args)
{
JTable table = new JTable();
table.setModel(new DefaultTableModel(
new Object[][] {
},
new String[] {
"Location", "Latitude", "Longitude", "Nitrogen", "Phosphorus", "Potassium", "pH"
}
));
JButton button1 = new JButton("Add First Row");
button1.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
((DefaultTableModel) table.getModel()).addRow(Data.getFirstRow());
}
});
JButton button2 = new JButton("Set All Rows");
button2.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
table.setModel(new DefaultTableModel(
Data.getAllRows(),
new String[] {
"Location", "Latitude", "Longitude", "Nitrogen", "Phosphorus", "Potassium", "pH"
}
));
}
});
JPanel buttonPanel = new JPanel();
buttonPanel.add(button1);
buttonPanel.add(button2);
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new JScrollPane(table), BorderLayout.CENTER);
frame.getContentPane().add(buttonPanel, BorderLayout.SOUTH);
frame.pack();
frame.setVisible(true);
}
}
class Data
{
private static Object[][] rows = new Object[][] {
{"a1", "b1", "c1", "d1", "e1", "f1", "g1"},
{"a2", "b2", "c2", "d2", "e2", "f2", "g2"},
{"a3", "b3", "c3", "d3", "e3", "f3", "g3"},
{"a4", "b4", "c4", "d4", "e4", "f4", "g4"}
};
static Object[][] getAllRows()
{
return rows;
}
static Object[] getFirstRow()
{
return rows[0];
}
}
添加回答
舉報