Как связать класс модели со всей строкой в JTable, чтобы получить ссылку на модель класса по номеру строки?Связанный класс модели со всей строкой в JTable
ответ
Извините, но я не могу понять, как я могу получить MyBusinessObject экземпляр, связанный с указанной строки
Ну, вам нужно будет добавить метод GetRow (...) для возврата соответствующего бизнес-объекта.
Я написал общий RowTableModel, который делает это. Однако это абстрактный класс, вы можете использовать BeanTableModel, который расширяет RowTableModel. Или пример показывает, как легко расширить RowTableModel, реализовав несколько методов.
Edit:
Добавьте следующие две строки в конце примера:
frame.setVisible(true);
JButton first = model.getRow(0);
System.out.println(first);
Вы справляетесь с этим, определяя реализацию TableModel. (http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/table/TableModel.html) Класс TableModel может хранить ваши данные, как вам нравится. Так, например, у вас может быть список объектов, каждый элемент которого представляет собой целую строку.
OK, если да, как я могу получить строку-строку по индексу строки? Единственный подходящий метод, который я вижу - getValueAt() используется для рендеринга и столбца. – kilonet
См. Мое решение. Основная структура данных - это список, в котором индекс списка является индексом модели и не зависит от изменения вида (например, если сортировка JTable). – Adamski
// 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.
}
Извините, но я не вижу, как я могу получить экземпляр MyBusinessObject, связанный с указанной строкой, ваш пример – kilonet
Я предлагаю вам взглянуть на GlazedLists, который будет работать для любого объекта Domain Model, который следует Java Beans соглашения (геттер/сеттер).
Документация очень хорошая, и есть хорошие примеры.
GlazedLists также предлагает другие интересные функции (например, фильтрацию), если они вам понадобятся.
- 1. Связанный список со строкой
- 2. Выберите позицию строки Togther со всей строкой
- 3. Как сделать substr_replace совпадением со всей строкой
- 4. Одна форма со всей строкой одного объекта
- 5. JTable-фильтрация с точным совпадением со строкой
- 6. метод Замены класс со строкой в Python
- 7. Значок JTable, связанный с объектом
- 8. Как сопоставить целочисленный атрибут модели со строкой?
- 9. Java-Как вызвать класс со строкой?
- 10. Django: получить связанный класс модели из родительского класса модели
- 11. Как получить экземпляр модели, связанный со строкой listview с помощью setTag (int, object)?
- 12. Использовать связанный масштаб модели
- 13. , связанный со статическим списком
- 14. Связанный список со сравнением
- 15. выражение конкатенации со строкой в директиве нг-модели
- 16. JTable колонка модели
- 17. Как написать статический класс с идентификатором со строкой в нем
- 18. Пропустить массив со строкой и int в другой класс
- 19. Исключительное исключение указателя при копировании в класс со строкой
- 20. Обновление текущей модели JTable
- 21. важность модели JTable?
- 22. Z3: Поиск всей удовлетворяющей модели в java
- 23. Сравнение Arraylist со строкой
- 24. Класс 'JTable' не найден
- 25. Общий класс для JTable
- 26. Связанный со списком вектор
- 27. пытается сохранить класс, связанный со своим классом, уже существует
- 28. Модельный класс для всей таблицы базы данных
- 29. Работает ли WeakReference со строкой?
- 30. wpf привязка данных - двусторонняя привязка со строкой?
кажется правильным. Один маленький вопрос об использовании: ((RowTableModel) jtable.getModel()). GetRow (строка)? –
kilonet
Я не вижу вопроса, но я добавил простой пример выше, основанный на примере JButtonTableModel. – camickr