java - JTable 值被覆盖

标签 java swing

我的 GUI 应用程序正在连接到数据库,并且我已成功将产品从数据库添加到 GUI 上的 JTable 中。当我单击第二个按钮时,它会覆盖第一个按钮。我不想要这个,因为它是一个订单,直到系统,我希望我点击的任何内容都出现在点击时的表格上。有什么方法可以附加到表中而不是每次都覆盖值。这是我的代码。

americanoSmall.addActionListener(
        new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                try {
                    String query = "select ProductName, Price from product where ProductID = 24";
                    java.sql.PreparedStatement pst = connection.prepareStatement(query);
                    ResultSet rs = pst.executeQuery();
                    table.setModel(DbUtils.resultSetToTableModel(rs));

                    } catch (Exception e1) 
                    {
                        e1.printStackTrace();
                    }
                }
            });

最佳答案

只要模型发生变化,就不要更改表模型。相反,请使用 TableModeladdRow 方法。这是一个最小、完整且可验证的示例。

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

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

public class Test {
    public static void main(String[] args) {
        JFrame frame = new JFrame("Test");

        Container cont = frame.getContentPane();
        cont.setLayout(new BorderLayout());

        DefaultTableModel dtm = new DefaultTableModel(new Object[]{"Column 1","Column 2"}, 0);
        JTable table = new JTable(dtm);

        JScrollPane scroll = new JScrollPane(table);
        cont.add(scroll, BorderLayout.CENTER);

        dtm.addRow(new Object[]{"Value 1", "Value 2"});

        JButton add = new JButton("Add");
        cont.add(add, BorderLayout.NORTH);

        add.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                dtm.addRow(new Object[]{"Another value", "Another value"});
            }
        });

        frame.pack();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}

关于java - JTable 值被覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43089260/

相关文章:

java - 小服务程序 : SEVERE: Allocate exception for servlet

java - 一个 JFrame 不会停止其他框架的代码

java - 将数据从 MySQL 加载到 JComboBox

java - Play 框架 2.1 中的 Kerberos 身份验证

java - Tomcat 8.5.33 Java WebApp 突然变慢了

java - 从字符串 JSON 数据获取嵌套 JSON 数据

java - Android:实现一个数字 slider

java - Jframe 内的 JPanel

Java bean 绑定(bind) : adapters?

Java 开关按钮