JTable and Jcheckbox

Модератор: Absurd

Ответить
Аватара пользователя
Gelert
Сообщения: 61
Зарегистрирован: 27 янв 2005, 00:02
Контактная информация:

приветствую.
мне надо создать таблицу в которой будут выводиться данные из БД, но так чтоб одна колонка была с Jcheckbox'ами. Ниже приведен код... почти вес получилось - единственное что checkbox'ы отображаются только когда по ним кликаешь, в остальное время там значения (true/false).

DefaultTableModel model = new DefaultTableModel(){
public boolean isCellEditable(int rowIndex, int mColIndex) { if (mColIndex == 2) return true; return false;}
};

// Create a couple of columns
model.addColumn("No");
model.addColumn("Ф.И.О.");
model.addColumn("Присутствие");



for (int i = 0; ... /* тут пробегаюсь по всему HashMap'у*/; i++){
model.addRow(new Object[]{obj.get("id"),
obj.get("firstname") + " " + obj.get("lastname") + " " + obj.get("surname"),
Boolean.TRUE });
}


table.setModel(model);
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
TableColumn col = table.getColumnModel().getColumn(0);
col.setPreferredWidth(50);
col = table.getColumnModel().getColumn(1);
col.setPreferredWidth(300);
col = table.getColumnModel().getColumn(2);
col.setCellEditor(new DefaultCellEditor(new JCheckBox()));
col.setPreferredWidth(100);
Мужчина должен уметь делать все, кроме как рожать детей и трахаться в задницу.
mobius
Сообщения: 157
Зарегистрирован: 25 янв 2005, 18:42
Откуда: Минск
Контактная информация:

С этой ерундой не часто работаю, на сколько я поню там можно дёргнуть Repaint у обекта для отрисовки, эту штуку можно поместить на onRepaint таблицы...

Это просто мысли в слух, должно быть решение гораздо лучше :)
Всё об отдыхе на http://chugaga.com
Аватара пользователя
Gelert
Сообщения: 61
Зарегистрирован: 27 янв 2005, 00:02
Контактная информация:

спасибо конечно!
я уверен, что можно как то по другому это сделать.... идей больше никаких нет?
там можно любой тип контрола докинуть в JTable .... но вопрос как??
Мужчина должен уметь делать все, кроме как рожать детей и трахаться в задницу.
Аватара пользователя
Gelert
Сообщения: 61
Зарегистрирован: 27 янв 2005, 00:02
Контактная информация:

ну в общем. если кого заинтересует вопрос - вот решение:
добавляем строку (к тому коду что выше)
col.setCellRenderer(new cGenderRenderer());

описываем класс cGenderRenderer.
import java.awt.Component;
import javax.swing.*;
import javax.swing.table.TableCellRenderer;

public class cGenderRenderer extends JCheckBox
implements TableCellRenderer {

public cGenderRenderer() {
super();
}

public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus, int
row,
int column) {

if (isSelected) {
setForeground(table.getSelectionForeground());
super.setBackground(table.getSelectionBackground());
} else {
setForeground(table.getForeground());
setBackground(table.getBackground());
}

boolean isMale = ((Boolean) value).booleanValue();
setSelected(isMale ? false : true);
return this;
}

}

вот собственно говоря и все.
Мужчина должен уметь делать все, кроме как рожать детей и трахаться в задницу.
Ответить