Я хочу обновить таблицу при нажатии кнопки

Я новичок в Swing.

Я хочу обновить таблицу после нажатия кнопки (кнопка Готово). Я думаю, что данные верны, но экран не работает.

Следующее объяснение моей программы

проверьте флажки и нажмите кнопку Готовонижний слой должен измениться.нет главного

Это мой код:

import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.table.DefaultTableModel;

import net.miginfocom.swing.MigLayout;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Gui extends JFrame {

    class Table extends JTable{
        public Table(DefaultTableModel model) {
            super(model);
        }
        public Class getColumnClass(int column) {
            switch (column) {
            case 1:
                return Boolean.class;
            default:
                return String.class;
            }
        }
    }

    private final int BANDNUM = 43;
    int[] checkBands;
    Object[][] data;
    Table table;
    JScrollPane upperScrollpane;
    JScrollPane downScrollPane;
    JSplitPane splitPane;

    public Gui() {

        // BASE SETTING
        setSize(900, 800);

        JPanel mainPanel = new JPanel();
        mainPanel.setLayout(new BorderLayout(5, 5));

        JPanel northPanel = new JPanel(new MigLayout());

        // northPanel SETTING
        JLabel labelIp = new JLabel("IP");
        JTextField tFIp = new JTextField(20);

        JLabel labelMask = new JLabel("Subnet Mask");
        JTextField tFMask = new JTextField(20);

        JLabel labelPing = new JLabel("Ping");
        JTextField tFPing = new JTextField(10);

        JButton btnReady = new JButton("Ready");
        JLabel labelReady = new JLabel("NOT READY");

        northPanel.add(labelIp);
        northPanel.add(tFIp);
        northPanel.add(labelMask);
        northPanel.add(tFMask);
        northPanel.add(labelPing);
        northPanel.add(tFPing);
        northPanel.add(btnReady);
        northPanel.add(labelReady, "wrap");

        // upper scrollpane -> will be included in JsplitPane Upper Side
        JPanel checkPanel = new JPanel(new MigLayout());

        JCheckBox[] checkBoxes = new JCheckBox[BANDNUM];
        JButton doneButton = new JButton("DONE");

        for (int i = 0; i < BANDNUM; i++) {
            checkBoxes[i] = new JCheckBox("" + (i + 1));
            checkBoxes[i].setHorizontalTextPosition(SwingConstants.CENTER);
            checkBoxes[i].setVerticalTextPosition(SwingConstants.BOTTOM);
            if (i == 32) {
                checkPanel.add(checkBoxes[i], "wrap");
            } else if (i == 42) {
                checkPanel.add(checkBoxes[i], "wrap");
            } else {
                checkPanel.add(checkBoxes[i]);
            }
        }

        checkPanel.add(doneButton, "span 3");

        // startButton Action

        /////////////////////////////////////////
        //I think you should watch from this line!!!
        /////////////////////////////////////////
        doneButton.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                // 1. CHECK WHAT ARE CLICKED
                int length = 0;
                for (int i = 0; i < BANDNUM; i++)
                    if (checkBoxes[i].isSelected())
                        length++;
                checkBands = new int[length];

                System.out.println(length);

                int k = 0;
                for (int i = 0; i < BANDNUM; i++) {
                    if (checkBoxes[i].isSelected()) {
                        checkBands[k++] = i + 1;
                    }
                }

                // 2. Ready for display
                data = new Object[length][6];
                for (int i = 0; i < length; i++) {
                    data[i][0] = checkBands[i];
                    data[i][1] = true;
                    data[i][2] = 1;
                    data[i][3] = 2;
                    data[i][4] = 3;
                    data[i][5] = 4;
                }

                // 3. display
                String[] colNames = { "BAND", "Test1", "Test2", "Test3",
                        "Test4", "Test5" };
                DefaultTableModel model = new DefaultTableModel(data, colNames);
                table = new Table(model);
                setVisible(true);
                table.repaint();
                downScrollPane.repaint();
                splitPane.repaint();
            }
        });

        // down scrollpane -> will be included in JsplitPane down Side
        String[] colNames = { "BAND", "Test1", "Test2", "Test3", "Test4",
                "Test5" };
        Object[][] data = { { null, null, null, null, null, null }};
        DefaultTableModel model = new DefaultTableModel(data, colNames);
        table = new Table(model);

        // include
        upperScrollpane = new JScrollPane(checkPanel);
        downScrollPane = new JScrollPane(table);

        splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, upperScrollpane, downScrollPane);

        mainPanel.add(northPanel, BorderLayout.NORTH);
        mainPanel.add(splitPane, BorderLayout.CENTER);
        getContentPane().add(mainPanel);

        setVisible(true);

    }

}

Ответы на вопрос(1)

Ваш ответ на вопрос