Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java将数据传递到JTable';单击按钮后,单击行_Java_Swing_Jtable - Fatal编程技术网

java将数据传递到JTable';单击按钮后,单击行

java将数据传递到JTable';单击按钮后,单击行,java,swing,jtable,Java,Swing,Jtable,我正在做一个java应用程序,它必须将一个初始化的字符串数组作为行显示给JTable 这就是我所尝试的: Object[] _row1; public PrintMeNow() { table = new JTable(); table.setBounds(16, 203, 362, 16); table.setShowHorizontalLines(true); table.setShowVerticalLines(tr

我正在做一个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"};
      }
  });
但当我按下开始按钮时,它并没有填满这一行。我在这里做错了什么?非常感谢你的帮助。谢谢

但当我按下开始按钮时,它并没有填满这一行。我是什么 我在这里做错了什么

  • ActionListener
    中的代码缺少任何代码,无法添加到
    addRow
    JTable
    DefaultTableModel
    table.getModel….

  • 在使用
    DefaultTableModel
    的情况下,行是否添加到
    JTable
    DefaultTableModel

  • 不要在Swing中使用
    NullLayout
    ,Swing是通过使用
    LayoutManager

但当我按下开始按钮时,它并没有填满这一行。我是什么 我在这里做错了什么

  • ActionListener
    中的代码缺少任何代码,无法添加到
    addRow
    JTable
    DefaultTableModel
    table.getModel….

  • 在使用
    DefaultTableModel
    的情况下,行是否添加到
    JTable
    DefaultTableModel

  • 不要在Swing中使用
    NullLayout
    ,Swing是通过使用
    LayoutManager


您需要做的是在
模型中添加一行。像这样的

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);

更新示例

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;
    }
}
import java.awt.*;
导入java.util.Stack;
导入java.awt.event.*;
导入javax.swing.*;
导入javax.swing.table.DefaultTableModel;
公共类测试表{
私有字符串[]colNames={“col1”、“Col2”、“Col3”、“Col4”、“Col5”};
私有DefaultTableModel=new DefaultTableModel(colNames,0);
专用JTable表=新JTable(模型);
private MyStack MyStack=new MyStack();
私有堆栈;
私有JButton按钮=新JButton(“添加行”);
公共测试表(){
stack=myStack.getStack();
addActionListener(新建ActionListener()){
已执行的公共无效操作(操作事件e){
如果(!stack.isEmpty()){
整数[]数组=stack.pop();
addRow(数组)模型;
}
}
});
JFrame=新JFrame();
添加(新的JScrollPane(表),BorderLayout.CENTER);
框架。添加(按钮,边框布局。南);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(空);
frame.setVisible(true);
}
公共静态void main(字符串[]args){
SwingUtilities.invokeLater(新的Runnable(){
公开募捐{
新的TestTable();
}
});
}
}
类MyStack{
公共堆栈=新堆栈();
公共MyStack(){
int k=1;
对于(int i=0;i<20;i++){
整数[]数组=新整数[5];
对于(int j=0;j<5;j++){
数组[j]=i*k*(j+1);
}
k++;
堆栈推送(数组);
}
}
公共堆栈getStack(){
返回栈;
}
}
解释

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

您需要做的是在
模型中添加一行。像这样的

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);

更新示例

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;
    }
}
import java.awt.*;
导入java.util.Stack;
导入java.awt.event.*;
导入javax.swing.*;
导入javax.swing.table.DefaultTableModel;
公共类测试表{
私有字符串[]colNames={“col1”、“Col2”、“Col3”、“Col4”、“Col5”};
私有DefaultTableModel=new DefaultTableModel(colNames,0);
专用JTable表=新JTable(模型);
private MyStack MyStack=new MyStack();
私有堆栈;
私有JButton按钮=新JButton(“添加行”);
公共测试表(){
stack=myStack.getStack();
addActionListener(新建ActionListener()){
已执行的公共无效操作(操作事件e){
如果(!stack.isEmpty()){
整数[]数组=stack.pop();
addRow(数组)模型;
}
}
});
JFrame=新JFrame();
添加(新的JScrollPane(表),BorderLayout.CENTER);
框架。添加(按钮,边框布局。南);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(空);
frame.setVisible(true);
}
公共静态void main(字符串[]args){
SwingUtilities.invokeLater(新的Runnable(){
公开募捐{
新的TestTable();
}
});
}
}
类MyStack{
公共堆栈=新堆栈();
公共MyStack(){
int k=1;
对于(int i=0;i<20;i++){
整数[]数组=新整数[5];
对于(int j=0;j<5;j++){
数组[j]