我的 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();
}
}
});
最佳答案
只要模型发生变化,就不要更改表模型
。相反,请使用 TableModel
的 addRow
方法。这是一个最小、完整且可验证的示例。
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/