swing的jtable中如何放置一列按钮jbutton

packagecom.zhong.tools;importjava.awt.Component;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.Abs...
摘要由CSDN通过智能技术生成
package com.zhong.tools;
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.JOptionPane;
import javax.swing.JTable;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;
public class MyRender extends AbstractCellEditor implements TableCellRenderer,ActionListener, TableCellEditor{
    private static final long serialVersionUID = 1L;
    private JButton button =null;
    public MyRender(){
        button = new JButton("修改");
        button.addActionListener(this);
    }
@Override
    public Object getCellEditorValue() {
        // TODO Auto-generated method stub
        return null;
    }
    @Override
    public Component getTableCellRendererComponent(JTable table, Object value,
            boolean isSelected, boo
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JTable添加按钮,需要使用自定义的单元格渲染器和单元格编辑器。具体步骤如下: 1. 创建一个自定义的单元格渲染器 在此单元格渲染器,我们可以将JButton组件添加到表格的单元格。 ```java import java.awt.Component; import javax.swing.JButton; import javax.swing.JTable; import javax.swing.table.TableCellRenderer; public 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) { if (isSelected) { setForeground(table.getSelectionForeground()); setBackground(table.getSelectionBackground()); } else { setForeground(table.getForeground()); setBackground(UIManager.getColor("Button.background")); } setText((value == null) ? "" : value.toString()); return this; } } ``` 2. 创建一个自定义的单元格编辑器 在此单元格编辑器,我们可以定义按钮的行为。 ```java import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.DefaultCellEditor; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JOptionPane; import javax.swing.JTable; public class ButtonEditor extends DefaultCellEditor { protected JButton button; private String label; private boolean isPushed; public ButtonEditor(JCheckBox checkBox) { super(checkBox); button = new JButton(); button.setOpaque(true); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { fireEditingStopped(); } }); } public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { if (isSelected) { button.setForeground(table.getSelectionForeground()); button.setBackground(table.getSelectionBackground()); } else { button.setForeground(table.getForeground()); button.setBackground(table.getBackground()); } label = (value == null) ? "" : value.toString(); button.setText(label); isPushed = true; return button; } public Object getCellEditorValue() { if (isPushed) { JOptionPane.showMessageDialog(button, label + ": Ouch!"); } isPushed = false; return new String(label); } public boolean stopCellEditing() { isPushed = false; return super.stopCellEditing(); } protected void fireEditingStopped() { super.fireEditingStopped(); } } ``` 3. 将自定义的单元格渲染器和单元格编辑器应用到表格 ```java import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; public class JButtonInJTableExample { public static void main(String[] args) { JFrame frame = new JFrame("JButton in JTable Example"); DefaultTableModel model = new DefaultTableModel(); model.addColumn("Name"); model.addColumn("Button"); JTable table = new JTable(model); table.getColumn("Button").setCellRenderer(new ButtonRenderer()); table.getColumn("Button").setCellEditor(new ButtonEditor(new JCheckBox())); table.setPreferredScrollableViewportSize(table.getPreferredSize()); JScrollPane scrollPane = new JScrollPane(table); JPanel panel = new JPanel(); panel.add(scrollPane); frame.add(panel); frame.pack(); frame.setVisible(true); } } ``` 在这个例子,我们首先创建了一个DefaultTableModel作为数据模型,添加了两列“Name”和“Button”,并填充了一行数据。然后使用JTable的getColumn方法获取“Button”列,分别将自定义的单元格渲染器和单元格编辑器应用到该列。最后将表格添加到JScrollPane,并将ScrollPane添加到JPanel,再将JPanel添加到JFrame显示出来。 运行程序,你会看到一个JTable带有按钮的例子。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值