Wakasa Rumi 2019-08-03 15:02 采纳率: 0%
浏览 966

Java swing 表格每行后嵌入删除按钮,点击按钮删除该行,但点击按钮所有行删剩最后一行时报错,如何解决?

图片说明


package mytest;
import java.awt.Component;
import java.awt.Component;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;
import javax.swing.table.*;

import org.jfree.xml.generator.ModelBuilder;

public class T extends JFrame{

    private static final long serialVersionUID = 1L;
    static  JTable table = null;
    static DefaultTableModel model=null;
    static JScrollPane js=null ;

    public T(){

    model = new DefaultTableModel(
            new String[] {
                    "课程名","教师","学分","学时","课程类别","课程性质","上课地点","上课时间","余量",""
                },2
            );

    table = new JTable(model);

    table.getColumnModel().getColumn(9).setCellEditor(new MyRender());//设置编辑器
    table.getColumnModel().getColumn(9).setCellRenderer(new MyRender() );

    js = new JScrollPane(table);

    this.add(js);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setVisible(true);
    this.setSize(399, 300);
    this.setLocationRelativeTo(null);

    }

    public static void main(String[] args) {
    // TODO Auto-generated method stub
        new T();
    }

    }

    //渲染 器 编辑器
    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, boolean hasFocus, int row, int column) {
        // TODO Auto-generated method stub
        return button;
        }
        @Override
        public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
            int row = T.table.getSelectedRow();


            if(row != -1){
                T.model.removeRow(row);
            }



        }
        @Override
        public Component getTableCellEditorComponent(JTable table, Object value,
        boolean isSelected, int row, int column) {
        // TODO Auto-generated method stub
        return button;
    }



  • 写回答

1条回答 默认 最新

  • 「已注销」 2019-08-04 13:18
    关注

    T.model.removeRow(row-1)

    评论

报告相同问题?

悬赏问题

  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作