gpt4 book ai didi

java - 根据 ActionPerformed 更新 JTable 内容

转载 作者:行者123 更新时间:2023-11-29 07:17:52 25 4
gpt4 key购买 nike

我似乎很难掌握实现一个简单的 JTable,当在 GUI 上按下一个按钮时,它只会更新表格的内容

到目前为止,我似乎对要实现什么类型的表有不同的想法,但通过搜索它似乎是 DefaultTable 模型。到目前为止,我已经声明了表格

private JTable table;
static Object[] columnNames = new Object[]{"Column 1","Column 2"};
static Object[][] rowData = { {"1", "2"} };

public TestTables() {
DefaultTableModel tableModel;
tableModel = new DefaultTableModel(rowData, columnNames);
}

我什至不确定我是否正确声明了它,但是当我运行 GUI 时它正确显示了表数据。我只是不明白如何使用执行的操作更新它

public void actionPerformed(ActionEvent e) {
if (e.getSource() == X1btn) {
// not sure how to set table to be {"3", "4"} instead
}

最佳答案

在您的 actionPerformed 方法中,获取对 JTable 模型的引用(具体细节将取决于您的程序结构——我们目前还不知道)这将是一个 DefaultTableModel,然后您可以轻松地做任何事情需要使用此对象完成,包括添加行、删除行、更改单元格持有的值...

如果您仍然遇到困难,请考虑创建并发布一个最小的可编译和可运行示例来演示您的问题,sscce .

例如:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;

public class TestTables {
static Object[] columnNames = new Object[] { "Column 1", "Column 2" };
static Integer[][] rowData = { {1, 2}, {3, 4} };

private JPanel mainPanel = new JPanel();
private DefaultTableModel tableModel = new DefaultTableModel(rowData, columnNames);
private JTable table = new JTable(tableModel);

public TestTables() {
JButton timesTwoBtn = new JButton("Multiply By 2");
timesTwoBtn.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {
for (int row = 0; row < tableModel.getRowCount(); row++) {
for (int col = 0; col < tableModel.getColumnCount(); col++) {
Integer value = (Integer) tableModel.getValueAt(row, col);
value *= 2;
tableModel.setValueAt(value, row, col);
}
}
}
});
JPanel btnPanel = new JPanel();
btnPanel.add(timesTwoBtn);


mainPanel.setLayout(new BorderLayout());
mainPanel.add(new JScrollPane(table), BorderLayout.CENTER);
mainPanel.add(btnPanel, BorderLayout.SOUTH);
}

public JPanel getMainPanel() {
return mainPanel;
}

private static void createAndShowGui() {
TestTables testTables = new TestTables();

JFrame frame = new JFrame("TableFoo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(testTables.getMainPanel());
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}
}

关于java - 根据 ActionPerformed 更新 JTable 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8020102/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com