【发布时间】:2018-06-02 15:19:29
【问题描述】:
我正在尝试创建一个没有任何数据行的 JTable,只添加了列标题。怎么做?这个想法是稍后通过按钮单击事件添加或删除行。
【问题讨论】:
我正在尝试创建一个没有任何数据行的 JTable,只添加了列标题。怎么做?这个想法是稍后通过按钮单击事件添加或删除行。
【问题讨论】:
很简单,使用构造函数new JTable(Vector rowData, Vector columnNames) 创建一个JTable,其中rowData 是新表的数据,columnNames 是每一列的名称。如果您只想创建一个没有行的表,请将Vector rows 设为空。
Vector rows = new Vector();
Vector headers = new Vector();
headers.addElement("Id");
headers.addElement("First name");
headers.addElement("Last name");
JTable table = new JTable(rows, headers);
【讨论】:
有很多方法可以创建和定义 JTable。做你想做的事,使用 TableModel 方法。您可以定义一个空模型并稍后用数据填充它。有关示例,请参阅Creating a JTable。
这是一个空表模型的简单演示。
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableColumnModel;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;
import javax.swing.table.TableModel;
public class JTableDemo {
public static void main(String args[]) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
TableModel model = new DefaultTableModel();
Object headers[] = { "Column One", "Column Two", "Column Three"};
TableColumnModel columnModel = new DefaultTableColumnModel();
TableColumn firstColumn = new TableColumn(1);
firstColumn.setHeaderValue(headers[0]);
columnModel.addColumn(firstColumn);
TableColumn secondColumn = new TableColumn(0);
secondColumn.setHeaderValue(headers[1]);
columnModel.addColumn(secondColumn);
TableColumn thirdColumn = new TableColumn(0);
thirdColumn.setHeaderValue(headers[2]);
columnModel.addColumn(thirdColumn);
JTable table = new JTable(model, columnModel);
JScrollPane scrollPane = new JScrollPane(table);
frame.add(scrollPane, BorderLayout.CENTER);
frame.setSize(300, 150);
frame.setVisible(true);
}
}
【讨论】: