【问题标题】:Java cast object[] to modelJava 将 object[] 转换为模型
【发布时间】:2015-03-02 21:36:48
【问题描述】:

我想知道如何将选定的 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)

【问题讨论】:

  • 你的模型类是什么样子的?

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


【解决方案1】:

在没有更多信息的情况下,您最好的选择是显式手动翻译。而不是:

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 对象支持您的表格。

【讨论】:

    【解决方案2】:

    这一定比使用所有的 setter 更容易。

    使用 JList 你可以使用这个:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多