java jtable 添加按钮,添加按钮到jtable
时间: 2023-11-17 16:07:12 浏览: 158
可以通过自定义 `JTable` 的单元格渲染器来实现在表格中添加按钮。下面是一个示例:
```java
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.AbstractCellEditor;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;
public class ButtonInJTableExample extends JFrame {
private JTable table;
public ButtonInJTableExample() {
setTitle("Button in JTable Example");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 创建表格数据模型
DefaultTableModel model = new DefaultTableModel(new Object[][] {
{ "John", new JButton("Click me") },
{ "Mary", new JButton("Click me") }
}, new Object[] { "Name", "Button" });
// 创建表格
table = new JTable(model);
// 自定义单元格渲染器和编辑器
table.getColumn("Button").setCellRenderer(new ButtonRenderer());
table.getColumn("Button").setCellEditor(new ButtonEditor());
// 将表格添加到窗口中
getContentPane().add(new JScrollPane(table));
pack();
}
public static void main(String[] args) {
new ButtonInJTableExample().setVisible(true);
}
// 自定义单元格渲染器
private class ButtonRenderer extends JButton implements TableCellRenderer {
public ButtonRenderer() {
setOpaque(true);
}
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
// 将单元格的值设置为按钮的文本
setText((value == null) ? "" : value.toString());
return this;
}
}
// 自定义单元格编辑器
private class ButtonEditor extends AbstractCellEditor implements TableCellEditor, ActionListener {
private JButton button;
public ButtonEditor() {
button = new JButton();
button.setOpaque(true);
button.addActionListener(this);
}
public Object getCellEditorValue() {
return button.getText();
}
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
button.setText((value == null) ? "" : value.toString());
return button;
}
public void actionPerformed(ActionEvent e) {
// 处理按钮点击事件
fireEditingStopped();
}
}
}
```
在这个例子中,我们创建了一个 `JTable`,其中包含了一个带有按钮的列。我们通过自定义单元格渲染器和编辑器来实现在单元格中显示和处理按钮。
阅读全文