带有按钮的 JBTable ColumnInfo

JBTable ColumnInfo with button

我有一个 JBtable,我想在其中一列中插入一个按钮。

我的尝试如下:

 private class DeleteColumn extends ColumnInfo<Field, JButton> {

        public DeleteColumn() {
            super("Delete");
        }

        @Nullable
        @Override
        public JButton valueOf(final Field field) {
            final JButton removalButton = new JButton();
            removalButton.setText("-");
            removalButton.addActionListener((e) -> {
                // do something
            });
            return removalButton;
        }

        @Override
        public Class<?> getColumnClass() {
            return JButton.class;
        }

    }

然而,当它被渲染时,它仍然只显示 JButton 的 .toString() 。如何在 table 中显示按钮?

您应该编写一个自定义渲染器。请看:

http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#editrender

您还可以查看示例:

http://docs.oracle.com/javase/tutorial/uiswing/examples/components/TableRenderDemoProject/src/components/TableRenderDemo.java

I would like to insert a button

您不应将 JButton 添加到 table。 JTable 的数据不应该是 Swing 组件。您应该只在列中存储文本,然后使用 JButton 呈现文本。

例如,查看 Table Button Column 中的 class,它允许您将按钮用作 renderer/editor。