Java Swing table列表增加操作按钮

Java Swing table列表增加操作按钮

我要的最终效果

在这里插入图片描述
网上关于Swing的资料还是相对比较少的。关于在列表后面添加操作按钮,我更是找了好久都没有找到。

开始表演

实现TableCellRenderer接口

/**
 * @author FeianLing
 * @date 2019/9/10
 */
public class MyButtonRender implements TableCellRenderer {
  private JPanel jPanel;
  private JButton jButton;

  public MyButtonRender() {
    initJPanel();
    initButton();
      jPanel.add(jButton);
  }

  private void initButton() {
      jButton = new JButton();
      jButton.setBounds(2, 3, 80, 30);
      jButton.addActionListener(
        new ActionListener() {
          @Override
          public void actionPerformed(ActionEvent e) {
            System.out.println("" + e.getActionCommand());
            System.out.println(jButton.getText());
          }
        });
  }

  private void initJPanel() {
      jPanel = new JPanel();
      jPanel.setLayout(null);
  }

  @Override
  public Component getTableCellRendererComponent(
      JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
      jButton.setText("编辑");
    return jPanel;
  }
}

构建我要显示的view

@Data
@Slf4j
public class AutoCaseListV extends JFrame {
  private static final long serialVersionUID = -6310560018875149946L;
  private Container container = getContentPane();

  public AutoCaseListV(String token) {
    setTitle("待送件列表");
    // 设计窗体大小
    setBounds(0, 0, 800, 900);
    // 添加一块桌布
    container.setLayout(new BorderLayout());
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    // 初始化窗口
    init(token);
    // 设计窗口可见
    setVisible(true);
  }
  /**
   * @author FeianLing
   * @date 2019/9/9
   * @desc 待送检列表数据显示初始化
   * @param
   * @return void
   */
  private void init(String token) {

    String[] cNames = {"案号", "商标名称", "申请类别", "订单号", "委托人", "申请人", "操作"};
    Object[][] rowData = {
      {"2019T-US002413T", " SHAW UROY", "21", "201909097071", "Devi", "Deli", 1},
      {"2019T-US002414T", " SHAW UROY", "21", "201909097071", "Devi", "Deli", 2},
      {"2019T-US002415T", " SHAW UROY", "21", "201909097071", "Devi", "Deli", 3},
      {"2019T-US002416T", " SHAW UROY", "21", "201909097071", "Devi", "Deli", 4},
    };
    JTable table = new JTable(rowData, cNames);
    table.setRowHeight(30);
    JScrollPane scrollPane = new JScrollPane(table);
    add(scrollPane);
    table.getColumnModel().getColumn(6).setCellRenderer(new MyButtonRender());
  }
}

运行代码 显示效果及如开篇所示。
吐槽一下:Swing画一个GUI界面都这么复杂,难怪没人用啊

  • 13
    点赞
  • 84
    收藏
    觉得还不错? 一键收藏
  • 24
    评论
要在 Java SwingJTable 中的每一行后面添加一个按钮,可以使用 JTable 的 DefaultTableModel 和 JButtonRenderer。首先,创建一个 DefaultTableModel 对象,并使用 addColumn() 方法添加列。然后,使用 addRow() 方法添加行。接下来,创建一个 JButtonRenderer 类,该类扩展了 JButton 并实现了 TableCellRenderer 接口,以便 JTable 可以在单元格中呈现按钮。最后,将 JButtonRenderer 分配给表格列的单元格渲染器。 下面是一个示例代码片段: ```java DefaultTableModel model = new DefaultTableModel(); model.addColumn("Name"); model.addColumn("Age"); model.addColumn("Button"); JTable table = new JTable(model) { public TableCellRenderer getCellRenderer(int row, int column) { if (column == 2) { return new JButtonRenderer(); } else { return super.getCellRenderer(row, column); } } }; table.getColumnModel().getColumn(2).setCellRenderer(new JButtonRenderer()); model.addRow(new Object[]{"John", 25, "Click"}); model.addRow(new Object[]{"Jane", 30, "Click"}); // JButtonRenderer class class JButtonRenderer extends JButton implements TableCellRenderer { public JButtonRenderer() { setOpaque(true); } public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { setText((value == null) ? "" : value.toString()); return this; } } ``` 在这个示例中,我们创建了一个包含三列的表格(Name、Age 和 Button)。我们使用 DefaultTableModel 的 addRow() 方法添加两行到表格中。最后,我们创建了一个 JButtonRenderer 类,并将其设置为第三列的单元格渲染器。在 getTableCellRendererComponent() 方法中,我们设置了按钮的文本并返回该按钮
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值