java. как array вбить в таблицу?
class MyPoint{
int x;
int y;
}
class MyTableModel extends AbstractTableModel{
private MyPoint[] pointxy;
private String [] columnNames = {"X","Y"};
MyTableModel(MyPoint[] data){
this.pointxy = data;
// other blablabla
}
public int getColumnCount { return 2}
public int getRowCount { return pointxy.length; }
public Object getValueAt(int row, int col) {
MyPoint p = pointxy[row];
String str;
col == 0 ? str=String.valueOf(p.x) : str = String.valueOf(p.y) ;
return str;
}
public String getColumnName(int col) {
return columnNames[col];
}
public void setValueAt(Object val, int row, int col) {
MyPoint p = pointxy[row];
String str = val.toString;
int valInt = Integer.parseInt(str);
col == 0 ? p. x= valInt : p.y = valInt;
// Indicate the change has happened:
fireTableDataChanged;
}
public boolean isCellEditable(int row, int col) {
return true;
}
}
Насчет сохранения в файле. Можно воспользоваться просто сериализацией. Сохранить объект
private MyPoint[] pointxy;
в файле, а потом при инициализации вытаскивать его
MyPoint[] array = ... //deserialization code
и использовать как параметр в конструкторе MyTableModel:
MyTableModel tm = new MyTableModel(array) ;
Соответсвенно, надо потом написать проинициализировать JTable:
JTable jt = new JTable(tm);
TableViewer viewer = new TableViewer(...);
...
viewer.setContentProvider(new ArrayContentProvider;
viewer.setInput(твойМассив);
Хранить данные в самой таблице, ИМХО, плохой дизайн. Кто знает, как она хранит данные... Если у неё не было шанса появиться на экране, так она может ничего и не хранит.
Ты имеешь ввиду паттерн Прокси?
пасиба
![](/images/graemlins/ooo.gif)
TableViewer...Это из SWT ?
Нет, скорее старый добрый Модель-Вид-Контролёр. Прокси - это что-то общее связанное с делегированием, никогда не применяющееся само по себе, насколько я помню.
Из JFace. Из SWT - Table.
Нет, скорее старый добрый Модель-Вид-Контролёр. Прокси - это что-то общее связанное с делегированием, никогда не применяющееся само по себе, насколько я помню.Ну, понятно. Я имел ввиду, что пока таблицу не рисуют, то и данные из файла тянуть не надо. По мере необходимости. Ладно, не суть важно.
Оставить комментарий
psilocybe
есть poinxy[i] и jTableну цикл, это всё понятно, а как непосредственно прописывать?
jTable1.setValueAt(pointxy[1],0,0);
неа?
и обратно как вытаскивать/в файл сохранять?