山卡拉村民 2021-07-12 20:04 采纳率: 0%
浏览 366

java的JTable表格里添加JButton按钮,按钮已添加但无法点击触发事件

我是参照这个文档https://blog.csdn.net/lingfeian/article/details/100702037 进行操作的,
按照文档内容,按钮添加上去之后,不能点击。
若表格是可编辑状态。双击按钮,则是将表格变成编辑状态,按钮消失。
若将表格设置为不可编辑状态。双击按钮,无任何反应,即便在按钮处添加响应事件。
由于原作者已经不在线许久,博客中的评论也没有解决方法。

附代码如下↓

/**
 * @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;
  }
}
@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());
  }
}
  • 写回答

1条回答 默认 最新

  • 咕泡-川南 2021-07-16 13:44
    关注

    你试一下用鼠标点击事件去做

    评论

报告相同问题?

问题事件

  • 创建了问题 7月12日

悬赏问题

  • ¥15 Xsheii7我安装这个文件的时候跳出来另一个文件已锁定文件的无一部分进程无法访问。这个该怎么解决
  • ¥15 unity terrain打包后地形错位,跟建筑不在同一个位置,怎么办
  • ¥15 FileNotFoundError 解决方案
  • ¥15 uniapp实现如下图的图表功能
  • ¥15 u-subsection如何修改相邻两个节点样式
  • ¥30 vs2010开发 WFP(windows filtering platform)
  • ¥15 服务端控制goose报文控制块的发布问题
  • ¥15 学习指导与未来导向啊
  • ¥15 求多普勒频移瞬时表达式
  • ¥15 如果要做一个老年人平板有哪些需求