为了账号安全,请及时绑定邮箱和手机立即绑定

刷新按钮失效,会报错,如何解决?

刷新按钮失效,会报错,如何解决?

郎朗坤 2022-10-08 14:10:22
操作描述:1.添加 -> 刷新2.点击表头进行排序3.清空 -> 刷新4.刷新按钮失效,会报错,如何解决?(如果不点击表头排序,则功能正常)Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 0 >= 0at java.util.Vector.elementAt(Vector.java:470)at javax.swing.table.DefaultTableModel.getValueAt(DefaultTableModel.java:649)at javax.swing.JTable.getValueAt(JTable.java:2720)at javax.swing.JTable.prepareRenderer(JTable.java:5718)at javax.swing.plaf.basic.BasicTableUI.paintCell(BasicTableUI.java:2114)at javax.swing.plaf.basic.BasicTableUI.paintCells(BasicTableUI.java:2016)at javax.swing.plaf.basic.BasicTableUI.paint(BasicTableUI.java:1812)at javax.swing.plaf.ComponentUI.update(ComponentUI.java:161)at javax.swing.JComponent.paintComponent(JComponent.java:778)at javax.swing.JComponent.paint(JComponent.java:1054)at javax.swing.JComponent.paintChildren(JComponent.java:887)at javax.swing.JComponent.paint(JComponent.java:1063)at javax.swing.JViewport.paint(JViewport.java:731)at javax.swing.JComponent.paintChildren(JComponent.java:887)at javax.swing.JComponent.paint(JComponent.java:1063)at javax.swing.JComponent.paintToOffscreen(JComponent.java:5221)at javax.swing.RepaintManager.paintDoubleBuffered(RepaintManager.java:1482)at javax.swing.RepaintManager.paint(RepaintManager.java:1413)at javax.swing.RepaintManager.paint(RepaintManager.java:1206)......
查看完整描述

3 回答

?
子衿沉夜

TA贡献1828条经验 获得超3个赞

这个情况我遇到过,我的解决方法是:排序之前把jtable内容设置为空,再调用排序,然后调用显示的。希望你能解决你的问题

查看完整回答
反对 回复 2022-10-12
?
qq_笑_17

TA贡献1818条经验 获得超7个赞

你这代码完全netbeans拖出来的,都不知道jtable的基本概念,数据直接加到jtable的Model里,不用你管理界面刷新,table有对model的监听,会自己刷

查看完整回答
反对 回复 2022-10-12
?
收到一只叮咚

TA贡献1821条经验 获得超5个赞

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Vector;

public class Test extends javax.swing.JFrame {

private Vector<Vector> tblDate; // 表数据
private Vector<String> tblHeaders; // 表头
private List<Integer> list; // 数据源

public Test() {
    tblDate = new Vector<Vector>();
    tblHeaders = new Vector<String>();
    list = new ArrayList<Integer>();
    tblHeaders.add("编号");
    tblHeaders.add("数据");

    initComponents();
    setLocationRelativeTo(null);
}

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
    // 添加
    list.add(list.size());
}

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
    // 清空
    list.clear();
}

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    // 刷新
    tblDate.clear();

    for (int i : list) {
        tblDate.add(new Vector(Arrays.asList(i, "测试数据" + i)));
    }
    jTable1.setModel(new javax.swing.table.DefaultTableModel(
            this.tblDate, this.tblHeaders
    ));
    jTable1.repaint();
    jTable1.updateUI();
}

// 下面都是NetBeans自动生成代码,不要管
public static void main(String args[]) {
    try {
        for (javax.swing.UIManager.LookAndFeelInfo info
                : javax.swing.UIManager.getInstalledLookAndFeels()) {
            if ("Nimbus".equals(info.getName())) {
                javax.swing.UIManager.setLookAndFeel(info.getClassName());
                break;
            }
        }
    } catch (Exception ex) {
        // TODO
    }

    java.awt.EventQueue.invokeLater(new Runnable() {
        @Override
        public void run() {
            new Test().setVisible(true);
        }
    });
}

@SuppressWarnings("unchecked")
private void initComponents() {
    jScrollPane1 = new javax.swing.JScrollPane();
    jTable1 = new javax.swing.JTable();
    jButton1 = new javax.swing.JButton();
    jButton2 = new javax.swing.JButton();
    jButton3 = new javax.swing.JButton();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

    jTable1.setModel(new javax.swing.table.DefaultTableModel(
            this.tblDate, this.tblHeaders
    ));
    jTable1.setAutoCreateRowSorter(true);
    jScrollPane1.setViewportView(jTable1);

    jButton2.setText("添加");
    jButton2.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jButton2ActionPerformed(evt);
        }
    });

    jButton3.setText("清空");
    jButton3.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jButton3ActionPerformed(evt);
        }
    });

    jButton1.setText("刷新");
    jButton1.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jButton1ActionPerformed(evt);
        }
    });

    javax.swing.GroupLayout layout = new javax.swing
    .GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                    .addContainerGap()
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout
                            .Alignment.LEADING)
                            .addComponent(jScrollPane1, javax.swing.GroupLayout
                                    .PREFERRED_SIZE, 0, Short.MAX_VALUE)
                            .addGroup(layout.createSequentialGroup()
                                    .addGap(0, 168, Short.MAX_VALUE)
                                    .addComponent(jButton2)
                                    .addGap(18, 18, 18)
                                    .addComponent(jButton3)
                                    .addGap(18, 18, 18)
                                    .addComponent(jButton1)))
                    .addContainerGap())
    );
    layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                    .addContainerGap()
                    .addComponent(jScrollPane1,
                            javax.swing.GroupLayout.DEFAULT_SIZE, 190, Short
                                    .MAX_VALUE)
                    .addGap(18, 18, 18)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout
                            .Alignment.BASELINE)
                            .addComponent(jButton1)
                            .addComponent(jButton2)
                            .addComponent(jButton3))
                    .addContainerGap())
    );

    pack();
}

private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable jTable1;
}


原因不知道

查看完整回答
反对 回复 2022-10-12
  • 3 回答
  • 0 关注
  • 268 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号