如何在不直接赋值的情况下创建 JTable
How to create a JTable without directly assigning values
我不确定如何在不直接为初始二维数组赋值的情况下为 JTable 赋值,即 String data[][]= new String[5][5]{"abc","def","ghi","jkl","mno"};
如果我声明我的 2D 字符串数组,后跟 defaultTableModel
,有什么方法可以将 abc、def、ghi、jkl、mno 的值分配给 Array/JTable 而无需执行它可能像上面那样在一个单独的方法中?
更新
JPanel invoiceViewPanel= new JPanel(null);
String data[][]= new String[4][10];
String columnHeaders[]={"Invoice ID","Invoice Name","Customer", "Complete?"};
DefaultTableModel model = new DefaultTableModel(data, columnHeaders) {
boolean[] Editable= new boolean[]{
false, false, false, true
};
public boolean isCellEditable(int rowIndex, int columnIndex) {
return editableCells[columnIndex];
}
@Override
public Class<?> getColumnClass(int columnIndex)
{
return columnClass[columnIndex];
}
};
JTable table=new JTable(model);
JScrollPane tableContainer=new JScrollPane(table);
final Class[] columnClass = new Class[]
{
Integer.class, String.class, String.class, Boolean.class
};
public void launch()
{
this.setLayout(new FlowLayout());
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.add(invoiceViewPanel);
invoiceViewPanel.add(tableContainer);
this.add(tableContainer);
this.setTitle("Invoices");
this.setSize(500,600);
this.setVisible(true);
this.setResizable(false);
}
这是我的代码的基本版本。这只是我的 JTable 的初始化。
我有一个格式为
的文本文件
001/ TV Purchase/ John Smith/ true
002/ Refrigerator Purchase/ Jean Smith/ false
所有 Swing 组件都使用 Model
。要更新组件,您需要更新模型。
因此,对于 JTable,您可以使用以下方法为您的 table 创建一个 "empty" 模型:
String[] columnNames = { "Column1", "Column2", ... };
DefaultTableModel model = new DefaultTableModel(columnNames, 0);
JTable table = new JTable( model );
现在,当您想要向模型添加数据时,您可以使用:
Object[] row = {"data1", data2", ... };
model.addRow( row );
阅读 DefaultTableModel
API 了解更多更改数据的方法。您还可以向模型添加 Vector
数据。
我不确定如何在不直接为初始二维数组赋值的情况下为 JTable 赋值,即 String data[][]= new String[5][5]{"abc","def","ghi","jkl","mno"};
如果我声明我的 2D 字符串数组,后跟 defaultTableModel
,有什么方法可以将 abc、def、ghi、jkl、mno 的值分配给 Array/JTable 而无需执行它可能像上面那样在一个单独的方法中?
更新
JPanel invoiceViewPanel= new JPanel(null);
String data[][]= new String[4][10];
String columnHeaders[]={"Invoice ID","Invoice Name","Customer", "Complete?"};
DefaultTableModel model = new DefaultTableModel(data, columnHeaders) {
boolean[] Editable= new boolean[]{
false, false, false, true
};
public boolean isCellEditable(int rowIndex, int columnIndex) {
return editableCells[columnIndex];
}
@Override
public Class<?> getColumnClass(int columnIndex)
{
return columnClass[columnIndex];
}
};
JTable table=new JTable(model);
JScrollPane tableContainer=new JScrollPane(table);
final Class[] columnClass = new Class[]
{
Integer.class, String.class, String.class, Boolean.class
};
public void launch()
{
this.setLayout(new FlowLayout());
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.add(invoiceViewPanel);
invoiceViewPanel.add(tableContainer);
this.add(tableContainer);
this.setTitle("Invoices");
this.setSize(500,600);
this.setVisible(true);
this.setResizable(false);
}
这是我的代码的基本版本。这只是我的 JTable 的初始化。
我有一个格式为
的文本文件001/ TV Purchase/ John Smith/ true
002/ Refrigerator Purchase/ Jean Smith/ false
所有 Swing 组件都使用 Model
。要更新组件,您需要更新模型。
因此,对于 JTable,您可以使用以下方法为您的 table 创建一个 "empty" 模型:
String[] columnNames = { "Column1", "Column2", ... };
DefaultTableModel model = new DefaultTableModel(columnNames, 0);
JTable table = new JTable( model );
现在,当您想要向模型添加数据时,您可以使用:
Object[] row = {"data1", data2", ... };
model.addRow( row );
阅读 DefaultTableModel
API 了解更多更改数据的方法。您还可以向模型添加 Vector
数据。