首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在单击按钮后从向量将数据更新为JTable

如何在单击按钮后从向量将数据更新为JTable
EN

Stack Overflow用户
提问于 2016-04-15 10:36:18
回答 2查看 560关注 0票数 1

如何在单击按钮后从向量将数据更新为JTable?我有将数据添加到JTable的代码,但是它为所有行显示相同的数据。下面是下面的代码:

代码语言:javascript
运行
复制
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

import mygui.MainParent;

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

public class Test {
    Vector<String> row;
    DefaultTableModel DFMO;
    Vector<Vector> rowData;
    JFrame frame;
    private int count = 0;
    public static void main(String arg[]){
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Test window = new Test();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });

    }
public Test() {
    frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JButton mybtn = new JButton("Click Me");
    frame.getContentPane().add(mybtn, BorderLayout.SOUTH);

    row = new Vector<String>();
    rowData = new Vector<Vector>();

    Vector<String> columnNames = new Vector<String>();
    columnNames.addElement("Column One");
    columnNames.addElement("Column Two");
    columnNames.addElement("Column Three");

    DFMO = new DefaultTableModel(rowData, columnNames);
    JTable table = new JTable(DFMO);
    JScrollPane scrollPane = new JScrollPane(table);
    frame.getContentPane().add(scrollPane, BorderLayout.CENTER);
    frame.setSize(300, 150);
    frame.setVisible(true);

    mybtn.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            datachange();
        }
    });

    datachange();

  }
  public void datachange(){
      count++;
      row.addElement("Row"+count+"-Column1");
      row.addElement("Row"+count+"-Column2");
      row.addElement("Row"+count+"-Column3");
      rowData.addElement(row);
      DFMO.fireTableDataChanged();
  }
}

但是,当我执行这段代码时,它不会显示更新的行,即使计数值发生了更改。下图显示了代码的输出。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-15 10:57:59

尝尝这个。你一直在添加同样的向量

代码语言:javascript
运行
复制
public void datachange(){
    count++;
    Vector<String> newRow = new Vector<>();
    newRow.addElement("Row"+count+"-Column1");
    newRow.addElement("Row"+count+"-Column2");
    newRow.addElement("Row"+count+"-Column3");
    DFMO.addRow(newRow);
    //rowData.addElement(row);
    DFMO.fireTableDataChanged();
}
票数 1
EN

Stack Overflow用户

发布于 2016-04-15 11:01:36

将数据添加到Vector (rowData)中。

您应该做的是直接将数据添加到DefaulTableModel对象。

替换

代码语言:javascript
运行
复制
rowData.addElement(row);

使用

代码语言:javascript
运行
复制
DMFO.addRow(row);

在datachange()方法中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36644845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档