带有按钮的 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
您还可以查看示例:
I would like to insert a button
您不应将 JButton 添加到 table。 JTable 的数据不应该是 Swing 组件。您应该只在列中存储文本,然后使用 JButton 呈现文本。
例如,查看 Table Button Column 中的 class,它允许您将按钮用作 renderer/editor。
我有一个 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
您还可以查看示例:
I would like to insert a button
您不应将 JButton 添加到 table。 JTable 的数据不应该是 Swing 组件。您应该只在列中存储文本,然后使用 JButton 呈现文本。
例如,查看 Table Button Column 中的 class,它允许您将按钮用作 renderer/editor。