Java将对象[]转换为模型

时间:2015-01-05 10:51:43

标签: java model-view-controller casting model jtable

我想知道如何将选定的JTable行放入模型中。

现在我得到了类似的东西。

    int selectedRowIndex = tabelSpelers.getSelectedRow();
    int selectedColumnIndex = tabelSpelers.getColumnCount();
    Object[] tableData = new Object[selectedColumnIndex];
    for (int j = 0 ; j < selectedColumnIndex; j++){
        tableData[j] = tabelSpelers.getValueAt(selectedRowIndex,j);
    }

    Speler selectedSpeler = (Speler) tableData;
    JOptionPane.showMessageDialog(this, tableData);

模型看起来像这样:

public Speler(int speler_id, String voornaam, String achternaam, String adres, String postcode, String woonplaats, String telefoonnummer, String email, int rating, boolean isBekend)

2 个答案:

答案 0 :(得分:0)

没有进一步信息的最佳选择是明确的手动翻译。而不是:

Object[] tableData = new Object[selectedColumnIndex];
for (int j = 0 ; j < selectedColumnIndex; j++){
  tableData[j] = tabelSpelers.getValueAt(selectedRowIndex,j);
}
Speler selectedSpeler = (Speler) tableData;

在最后一行产生ClassCastException,你会写:

Speler selectedSpeler = new Speler();
selectedSpeler.setFoo(tabelSpelers.getValueAt(selectedRowIndex, 1));
selectedSpeler.setBar(tabelSpelers.getValueAt(selectedRowIndex, 2));

等等,填充selectedSpeler对象的每个属性。

但是,您可能希望extend AbstractTableModel as in this example直接使用Speler对象支持您的表格。

答案 1 :(得分:0)

它必须比使用所有的设置者更容易。

使用JList,你可以使用它:

Speler selectedKlant = (Speler) this.listSpelers.getSelectedValue();

有没有办法用Jtable来解决这个问题?