Я использую Java Swing для создания таблицы с кнопками, которые я могу использовать для действий, основанных на строке.
Я использую пользовательский рендерер ячеек, чтобы попытаться отобразить несколько кнопок в ячейке таблицы.Мне удалось собрать воедино то, что делает то, что я хочу визуально, но кнопки на самом деле не работают.Они просто не стреляют и не реагируют визуально на щелчки или наведение мыши.Ищите способ заставить кнопки реагировать и фактически запускать их действия.
Класс визуализации ячейки:
public class ButtonsCell extends AbstractCellEditor implements TableCellEditor, TableCellRenderer {
JPanel panel;
public ButtonsCell() {
this.updateData(Collections.emptyList());
}
private void updateData(List<JButton> buttons) {
this.panel = new JPanel(new FlowLayout(FlowLayout.CENTER, 0, 0));
for(JButton button : buttons) {
button.setMargin(new Insets(-2, 0, -2, 0));
this.panel.add(button);
}
}
private void updateData(List<JButton> buttons, boolean isSelected, JTable table) {
this.updateData(buttons);
if (isSelected) {
this.panel.setBackground(table.getSelectionBackground());
}else{
this.panel.setBackground(table.getBackground());
}
}
public Component getTableCellEditorComponent(JTable table, Object value,
boolean isSelected, int row, int column) {
this.updateData((List<JButton>)value, isSelected, table);
return panel;
}
public Object getCellEditorValue() {
return null;
}
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
this.updateData((List<JButton>)value, isSelected, table);
return panel;
}
}
Визуально, это производит: