Привет, у меня есть класс с именем ColorChooser (в пакете net.java.dev.colorchooser.ColorChooser)
Это пользовательский компонент, используемый для выбора цветов. Я хочу отобразить JTable с ColorChoosers во втором столбце. Итак, я создал свой собственный TableCellRenderer, и он работает:
@SuppressWarnings("serial")
class ColorChooserTableRenderer extends DefaultTableCellRenderer {
public static List<ColorChooser> colors;
public ColorChooserTableRenderer(int rows) {
colors = new ArrayList<ColorChooser>(rows);
for (int i = 0; i<rows ; i ++) {
colors.add(new ColorChooser());
}
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
return colors.get(row);
}
}
Я регистрирую это в своей таблице:
JTable t = new JTable(5,3);
t.getColumn(t.getColumnName(1)).setCellRenderer(new ColorChooserTableRenderer(5));
Дисплей хороший. Он даже отображает всплывающую подсказку ColorChoosers, когда я наводю указатель мыши на одну из них. Проблема в том, что ColorChoosers не получают MouseEvents.
Обычно, когда вы нажимаете и удерживаете мышь на ColorChooser, вы получаете всплывающее окно, которое вы можете использовать для выбора цвета. Когда в JTable компонент ColorChooser не получает событие мыши.
Какие-нибудь решения?
Редактировать: вопрос может быть легко изменен на это:
Не могли бы вы привести небольшой пример таблицы, содержащей JButtons во втором столбце, которая действительно работает? Вы знаете, кнопки, которые можно нажимать?