为什么我的标签到目前为止在GridBagLayout中间隔开了?

时间:2014-05-06 13:44:07

标签: java swing label gridbaglayout

我是Java的新手,并且很难理解这一点:

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.GridBagConstraints;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.ScrollPaneConstants;
import javax.swing.border.EmptyBorder;
import javax.swing.JButton;
import javax.swing.JScrollPane;
import java.awt.GridBagLayout;

public class Main extends JFrame {

    private JPanel contentPane;
    static JPanel panel;
    static JScrollPane scrollPane;
    static JButton btnStart;

    private static String compTestArray[];
    static Integer indexer = 0;
    static List<JLabel> listOfLabels = new ArrayList<JLabel>();

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Main frame = new Main();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public Main() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 739, 456);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);

        btnStart = new JButton("Start");
        btnStart.setBounds(10, 379, 89, 23);
        btnStart.addActionListener(new ButtonListener());
        contentPane.add(btnStart);

        panel = new JPanel();
        panel.setBounds(10, 11, 513, 359);
        contentPane.add(panel);

        scrollPane = new JScrollPane(panel,
                ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
                ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
        GridBagLayout gbl_panel = new GridBagLayout();
        gbl_panel.columnWidths = new int[] { 0, 0, 0 };
        gbl_panel.rowHeights = new int[] { 0, 0, 0, 0 };
        gbl_panel.columnWeights = new double[] { 0.0, 0.0, Double.MIN_VALUE };
        gbl_panel.rowWeights = new double[] { 0.0, 0.0, 0.0, Double.MIN_VALUE };
        panel.setLayout(gbl_panel);
        scrollPane.setBounds(10, 11, 633, 359);
        contentPane.add(scrollPane);

        compTestArray = new String[2];
        compTestArray[0] = "172.16.98.3";
        compTestArray[1] = "172.16.98.6";
    }

    static class ButtonListener implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent arg0) {

            //String labelText = "Computer Name\tTest Name\tIteration\tPass\tFail\tCrashes\tStart\tStop";
            //labelText = labelText.replaceAll("\t", "     ");
            listOfLabels.add(new JLabel("Computer"));

            for(int ix = 0; ix < compTestArray.length; ix++){
                // Clear panel
                panel.removeAll();

                //labelText = compTestArray[indexer] + "\tKPI_1_1_1_1\t" + ix + "/20\t1\t\t0\t\t0\t\t12:00\t12:30";
                //labelText = labelText.replaceAll("\t", "         ");
                listOfLabels.add(new JLabel(compTestArray[indexer]));
                System.out.println("indexer is " + indexer);

                // Create constraints
                GridBagConstraints labelConstraints = new GridBagConstraints();

                // Add labels and text fields
                for (int i = 0; i < indexer+2; i++) {

                    // Label constraints
                    labelConstraints.gridx = 0;
                    labelConstraints.gridy = i;
                    labelConstraints.weightx = 0;
                    labelConstraints.insets = new Insets(10, 10, 10, 10);

                    // Add them to panel
                    panel.add(listOfLabels.get(i), labelConstraints);
                }

                // Align components top-to-bottom
                GridBagConstraints c = new GridBagConstraints();
                c.gridx = 0;
                c.gridy = indexer;
                c.weighty = 1;
                panel.add(new JLabel(), c);

                // Increment indexer
                indexer++;

                // Repaint the GUI
                scrollPane.validate();

            } // Close for loop

            // Disable Start button
            btnStart.setEnabled(false);
        } // Close public void actionPerformed(ActionEvent arg0)
    } // Close static class ButtonListener implements ActionListener
}

输出:

enter image description here

0 个答案:

没有答案