gpt4 book ai didi

单击按钮时java将数据传递到JTable的行

转载 作者:行者123 更新时间:2023-12-01 18:38:05 26 4
gpt4 key购买 nike

我正在做一个 java 应用程序,它必须传递一个初始化的字符串数组以将其显示为 JTable 的行。

这是我尝试过的:

      Object[] _row1;

public PrintMeNow() {
table = new JTable();
table.setBounds(16, 203, 362, 16);
table.setShowHorizontalLines(true);
table.setShowVerticalLines(true);
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
table.setModel(new DefaultTableModel(
new Object[][] {
_row1, {2,2,2}, {3,3,3}, {4,4,4}
},
new String[] {
"QTY", "Item Code", "Amount"
}
));

}

btnStart.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
_row1 = new Object[]{"DN Korina", "DN Madrid", "DN Romania"};
}
});

但是当我按下开始按钮时,它没有填充该行。我在这里做错了什么?非常感谢您的帮助。谢谢。

最佳答案

您需要做的是将一行添加到模型。像这样的事情

public void actionPerformed(ActionEvent arg0) {
DefaultTableModel model = (DefaultTableModel)table.getModel();
model.addRow(new Object[]{"DN Korina", "DN Madrid", "DN Romania"});
}

最简单的方法是事先将模型设置为没有行

String[] colNames = {
"QTY", "Item Code", "Amount"
};

DefaultTableModel model = new DefaultTableModel(colNames, 0); <== 0 rows
JTable table = new JTable(model);

然后无论您想添加什么行,只需添加到模型即可

public void actionPerformed(ActionEvent e){
model.addRow(new Object[]{"DN Korina", "DN Madrid", "DN Romania"});
}
<小时/>

更新示例

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

public class TestTable {

private String[] colNames = { "Col 1", "Col2", "Col3", "Col4", "Col5" };

private DefaultTableModel model = new DefaultTableModel(colNames, 0);
private JTable table = new JTable(model);
private MyStack myStack = new MyStack();
private Stack<Integer[]> stack;

private JButton button = new JButton("Add Row");

public TestTable() {
stack = myStack.getStack();

button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (!stack.isEmpty()) {
Integer[] array = stack.pop();
model.addRow(array);
}
}
});

JFrame frame = new JFrame();
frame.add(new JScrollPane(table), BorderLayout.CENTER);
frame.add(button, BorderLayout.SOUTH);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}

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

class MyStack {
public Stack<Integer[]> stack = new Stack<Integer[]>();

public MyStack() {
int k = 1;
for (int i = 0; i < 20; i++) {
Integer[] array = new Integer[5];
for (int j = 0; j < 5; j++) {
array[j] = i * k * (j + 1);
}
k++;
stack.push(array);
}
}

public Stack<Integer[]> getStack() {
return stack;
}
}

说明

  • 我有一个包含 Stack 的 MyStack 类。它甚至可以是任何数据结构,例如数组,但我选择使用 Stack 因为我只需 .pop() 它。并获取Integer[]
  • 我在 GUI 类中实例化该类
  • 然后我提取该Stack。请记住 Stack 保存 Integer[]
  • 正如我所解释的,您想要向模型添加一个单维数组。
  • 因此,每次单击按钮时,都会从 Stack 中拉出一个 Integer[],然后我只需将该数组添加到模型 作为一行。

关于单击按钮时java将数据传递到JTable的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20967741/

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