Предисловие: Я ужасен с Java и хуже с Java ui компоненты.
Я нашел несколько различных учебных руководств о том, как добавить кнопки к таблицам, однако я борюсь с добавлением флажков. У меня должен быть столбец, который тянет текстовое поле, отмеченное на значении по умолчанию (рендерер ячейки, я думаю дескрипторы, что), затем по щелчку tickbox, удаляет галочку у поля, перерисовки сказали, что поле, и исчерпывает событие где-нибудь, я могу отследить.
в настоящее время у меня есть пользовательский cellrenderer:
public class GraphButtonCellRenderer extends JCheckBox implements TableCellRenderer {
public GraphButtonCellRenderer() {
}
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
if(isSelected)
setSelected(true);
else
setSelected(false);
setMargin(new Insets(0, 16, 0, 0));
setIconTextGap(0);
setBackground(new Color(255,255,255,0));
return this;
}}
Который в настоящее время обрабатывает рисование поля галочки, но только отмечает и удаляет галочку у поля, если та строка выбрана. Но я не знаю, как обработать события. Действительно то, что я спрашиваю, является возможно ссылкой на хорошее учебное руководство о том, как добавить флажки чисто к JTable. Любой помогает, значительно ценится :)
Нет необходимости создавать свой собственный рендерер таблиц. Вот более простой пример. Просто создайте пользовательскую модель таблицы и для заданного столбца верните класс Boolean for:
public Class getColumnClass(int column)
Если вы хотите, чтобы столбец был редактируемым, верните true for
public boolean isCellEditable(int row, int column)
JTable позаботится о рендеринге за вас.
Самое простое решение - использовать DefaultTableModel и использовать в качестве значений булевы объекты.
Вот простой довольно сложный пример с использованием TableCellRenderer
и TableCellEditor
. См. также, Концепции: Редакторы и рендереры.
Дополнение: Замечание @Jay Askren верно подмечено. Рендерер по умолчанию для Boolean.class
, как описано в учебнике, может быть всем, что вам нужно.