如何將我的模型類與JTable中的整行相關聯,以便按行號獲取到模型類的鏈接?JTable中整行的關聯模型類
0
A
回答
1
對不起,但我不能看我怎麼可以得到指定行
好相關 MyBusinessObject情況下,你將需要添加的getRow(...)方法返回適當的業務對象。
我寫了一個通用的RowTableModel來做到這一點。然而,這是一個抽象類,您可以使用擴展RowTableModel的BeanTableModel。或者該示例向您展示瞭如何通過實現幾個方法來輕鬆擴展RowTableModel。
編輯:
以下兩行添加到該示例的末尾:
frame.setVisible(true);
JButton first = model.getRow(0);
System.out.println(first);
0
您可以通過定義TableModel的實現來處理這個問題。 (http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/table/TableModel.html)您的TableModel類可以存儲您喜歡的數據。因此,例如,您可以擁有一個列表中的每個元素代表整行的對象列表。
0
// Define underlying business object:
public class MyBusinessObject {
private final int i;
private final double d;
private final String s;
public MyBusinessObject(int i, double d, String s) {
this.i = i;
this.d = d;
this.s = s;
}
public int getI() { return i; }
public double getD() { return d; }
public String getS() { return s; }
}
// Define TableModel implementation that "sits on" MyBusinessObject:
public class MyTableModel extends AbstractTableModel {
private static final String[] COLUMN_NAMES = { "i", "d", "s" };
private static final Class<?>[] COLUMN_CLASSES = { Integer.class, Double.class, String.class };
static {
assert COLUMN_NAMES.length == COLUMN_CLASSES.length;
}
// Collection of business objects. Use ArrayList for efficient random access.
private final List<MyBusinessObject> bizObj = new ArrayList<MyBusinessObject>();
// TableModel methods delegate through to collection of MyBusinessObject.
public int getColumnCount() { return COLUMN_NAMES.length; }
public String[] getColumnNames() { return COLUMN_NAMES; }
public Class<?>[] getColumnClasses() { return COLUMN_CLASSES; }
public Object getValueAt(int row, int col) {
Object ret;
MyBusinessObject bo = bizObj.get(row);
switch(col) {
case 1:
ret = bo.getI();
break;
case 2:
ret = bo.getD();
break;
case 3:
ret = bo.getS();
break;
default:
throw new IllegalArgumentException("Invalid column index: " + col);
}
return ret;
}
// Additional methods for updating the collection.
public void addBusinessObject(MyBusinessObject bo) {
bizObj.add(bo);
int i = bizObj.size() - 1;
fireTableRowsInserted(i, i);
}
// ... etc.
}
+0
對不起,但我不明白我怎麼能得到MyBusinessObject實例與指定的行關聯你的例子 – kilonet 2010-05-17 18:09:27
1
我建議你看一看GlazedLists這將對於遵循Java組件的任何領域模型對象工作約定(getter/setter)。
文檔非常好,也有很好的例子。
如果您需要它,GlazedLists還會帶來其他有趣的功能(例如過濾)。
相關問題
- 1. simple_form_for中的關聯模型
- 2. 關聯模型
- 3. 關聯模型
- 4. 獲取Rails模型的關聯關聯
- 5. 如何訪問關聯模型的關聯模型?
- 6. Rails模型關聯:兩個模型之間的多個關聯
- 7. CakePHP模型關聯
- 8. 有源模型串行器中的限制關聯級聯
- 9. 關於Rails模型關聯
- 10. 將模型A與模型B和模型B的關聯關聯
- 11. 如何獲取與模型關聯模型相關的模型?
- 12. 如何將模型與模型中的模型相關聯?
- 13. ActiveRecord的模型「型」態關聯的列包含關聯的模型
- 14. CakePHP的模型關聯
- 15. 的Joomla模型關聯
- 16. 模型的關聯數組
- 17. CakePHP的模型關聯
- 18. 獲取模型的關聯
- 19. CakePHP的雙模型關聯
- 20. 關聯模型的問題
- 21. CakePHP的無關聯模型
- 22. Rails 3的模型關聯
- 23. Rspec的模型關聯
- 24. 2 ActiveRecord的模型關聯
- 25. Rails的模型關聯
- 26. CakePHP中的中介模型/關聯表
- 27. JTable中的類型出錯
- 28. 如何關注一整行JTable?
- 29. JTable模型列
- 30. 哪種類型的關聯?
這似乎是一個正確的方式。一個關於用法的小問題:((RowTableModel)jtable.getModel())。getRow(row)? –
kilonet
2010-05-18 07:18:47
我沒有看到問題,但是我基於JButtonTableModel示例添加了一個上面的簡單示例。 – camickr 2010-05-18 16:16:48