[英]How to add to JTable?
我正在嘗試用Java創建Punnett Square,為此,我需要使用變量在JTable中編輯單元格。
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
public class JTableCreatingDemo {
public static void main(String args[]) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Object rowData[][] = { { "Row1-Column1", "Row1-Column2", "Row1-Column3" },
{ "Row2-Column1", "Row2-Column2", "Row2-Column3" } };
Object columnNames[] = { "Column One", "Column Two", "Column Three" };
JTable table = new JTable(rowData, columnNames);
JScrollPane scrollPane = new JScrollPane(table);
frame.add(scrollPane, BorderLayout.CENTER);
frame.setSize(300, 150);
frame.setVisible(true);
}
}
我正在從該代碼中學習JTable,有什么方法可以添加到rowData [] []和columnNames []嗎?
還是使用JTable制作Punnett Square程序的任何其他方法?
編輯:
這是包含表的方法
public void f12(List<String> fin, int a){
JFrame gamFrame = new JFrame();
Object column[] = {"Gametes", "Gametes"};
Object rowGam[][] = {};
final DefaultTableModel model = new DefaultTableModel(rowGam, column);
JTable gametes = new JTable(model);
double d = Math.pow(10,a - 1);
String[] rowData = new String[2];
for (int e = a - 1; e > 0; e--){
d += Math.pow(10, e - 1);
}
String a1 = "", a2 = "";
if (d > 10){
a1 = fin.get(0);
}
if (d == 11){
a2 = fin.get(1);
}
rowData[1] = String.format(a1 + a2);
model.addRow(rowData);
JScrollPane scrollPane = new JScrollPane(gametes);
gamFrame.add(scrollPane, BorderLayout.CENTER);
gamFrame.pack();
gamFrame.setVisible(true);
}
的
if (d > 10){
a1 = fin.get(0);
}
if (d == 11){
a2 = fin.get(1);
}
稍后會稍微復雜一些,但是該表也無法使用。
在上述情況下,fin = {A,B}並且a = 2。
我的預期結果是一張表,其中有一欄(配子),其下一行(AB)。
最簡單的解決方案:使用DefaultTableModel對象,然后如果要向其添加新的行數據,則調用其addRow(...)
方法。
例如:
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
public class JTableCreatingDemo {
public static void main(String args[]) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Object rowData[][] = {
{ "Row1-Column1", "Row1-Column2", "Row1-Column3" },
{ "Row2-Column1", "Row2-Column2", "Row2-Column3" } };
Object columnNames[] = { "Column One", "Column Two", "Column Three" };
final DefaultTableModel model = new DefaultTableModel(rowData,
columnNames);
JTable table = new JTable(model);
JScrollPane scrollPane = new JScrollPane(table);
JPanel btnPanel = new JPanel();
btnPanel.add(new JButton(new AbstractAction("Add Data") {
@Override
public void actionPerformed(ActionEvent e) {
int rows = model.getRowCount() + 1;
String[] rowData = new String[3];
for (int i = 0; i < rowData.length; i++) {
rowData[i] = String.format("Row%d-Column%d", rows, (i + 1));
}
model.addRow(rowData);
}
}));
frame.add(scrollPane, BorderLayout.CENTER);
frame.add(btnPanel, BorderLayout.PAGE_END);
// frame.setSize(300, 150);
frame.pack();
frame.setVisible(true);
}
}
同樣,您可以使用DefaultTableModel的其他方法,例如removeRow(...)
和setValueAt(...)
。 如果這還不足以滿足您的需求,那么您將需要創建自己的TableModel,它是從AbstractTableModel擴展而來的。 這將需要更多的工作,但可能會導致類更符合OOP。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.