【问题标题】:Populate JTable after action Listener is triggered触发动作侦听器后填充 JTable
【发布时间】:2018-12-11 12:37:46
【问题描述】:

我有一个static List<List<String>> tableValues;,我想在触发按钮“进入”后写入 JTable 我的列表已填满,因为我是 GUI 编程的新手,我不知道如何在事件发生后创建和填充表被触发,JTable 值动态变化。

    btnEnter.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            String date = textField_3.getText();
            //JTable table = new JTable();
            //JScrollPane tableContainer = new JScrollPane(table);
            try {
                tableValues = Inserts.search(date,3);  //table is filled
                for(List<String> value :  tableValues) {
                    System.out.println(value);
                }
            //table.setVisible(true);
            //panel_7.add(tableContainer, BorderLayout.CENTER); --> I want to add the table to a Panel
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    });

【问题讨论】:

    标签: java user-interface jframe jtable actionlistener


    【解决方案1】:

    JTable 可以使用setModel() 更新。请参见下面的示例。

    import javax.swing.*;
    import javax.swing.table.DefaultTableModel;
    import java.awt.BorderLayout;
    import java.awt.event.*;
    import java.util.*;
    
    public class UpdateTable {
    
      public static void main(String[] args) {
    
        List<List<String>> tableValues = new ArrayList<>();
        tableValues.add(Arrays.asList("value11", "value12", "value13"));
        tableValues.add(Arrays.asList("value21", "value22", "value23"));
        tableValues.add(Arrays.asList("value31", "value32", "value33"));
        tableValues.add(Arrays.asList("value41", "value42", "value43"));
    
        JTable table = new JTable();
    
        JButton button = new JButton("enter");
        button.addActionListener(new ActionListener() {
          @Override
          public void actionPerformed(ActionEvent e) {
    
            String[][] data = transform(tableValues);
            String[] columnNames = new String[] {"Column1", "Column2", "Column3"};
    
            table.setModel(new DefaultTableModel(data, columnNames));
          }
        });
    
        JFrame f = new JFrame("Update Table");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.getContentPane().add(new JScrollPane(table), BorderLayout.CENTER);
        f.getContentPane().add(button, BorderLayout.SOUTH);
        f.setBounds(300, 200, 400, 300);
        f.setVisible(true);
      }
    
      private static String[][] transform(List<List<String>> list) {
    
        String[][] array = new String[4][3];
        for (int i = 0; i < list.size(); i++) {
          for(int j = 0; j < list.get(i).size(); j++) {
            array[i][j] = list.get(i).get(j);
          }
        }
        return array;
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-04
      • 1970-01-01
      • 2022-06-10
      • 1970-01-01
      • 1970-01-01
      • 2015-12-27
      • 2019-11-24
      • 1970-01-01
      相关资源
      最近更新 更多