Java JButton操作不在JTable内部执行

Java JButton操作不在JTable内部执行,java,swing,jtable,renderer,Java,Swing,Jtable,Renderer,我得到了一个简单的JTable,其中一个单元格是一个Edit按钮,它需要打开一个新的JDialog 在web上的几个示例之后,我创建了一个新类,该类实现了TableCellRenderer,并从中返回了一个JButton,但由于某些原因,该按钮没有完成我需要的操作 这是我的代码: final MessageResourcesTableModel model = new MessageResourcesTableModel(columnNames); JTable resultsTable =

我得到了一个简单的JTable,其中一个单元格是一个
Edit
按钮,它需要打开一个新的
JDialog

在web上的几个示例之后,我创建了一个新类,该类实现了
TableCellRenderer
,并从中返回了一个JButton,但由于某些原因,该按钮没有完成我需要的操作

这是我的代码:

final MessageResourcesTableModel model = new MessageResourcesTableModel(columnNames);

JTable resultsTable = new JTable(model);
resultsTable.setShowGrid(true);
resultsTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
resultsTable.setPreferredScrollableViewportSize(resultsTable.getPreferredSize());
resultsTable.setFillsViewportHeight(true);
resultsTable.setFont(font13);

final TableCellRenderer buttonRenderer = new JTableButtonRenderer();
resultsTable.getColumn(COLUMN_EDIT).setCellRenderer(buttonRenderer);
这是渲染器:

class JTableButtonRenderer implements TableCellRenderer {
    @Override public Component getTableCellRendererComponent(final JTable table, final Object value, final boolean isSelected, final boolean hasFocus, final int row, final int column) {
        final JButton editButton = new JButton("Edit");
        editButton.setOpaque(true);

        editButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(final ActionEvent e) {
                System.out.println("Hi from Action !!!");

            }
        });
        return editButton;
    }
}

虽然有一个简单的ActionListener实现,但控制台上没有任何内容,渲染器只显示单元格中的数据。无法将ActionListener添加到按钮,因为它不是真正的组件。渲染器仅绘制表中按钮的图像

如果希望能够单击按钮,则需要创建自定义编辑器

请参阅,以获取为您实现此功能的编辑器实现。

@roeygol发布您的演示问题的帖子。