使用for循环创建多个JComponent的问题

时间:2015-01-22 22:42:43

标签: java swing

我正在运行几行代码来创建可变数量的JLabel,每个JLabel都在自己的行中。这工作正常,直到我到达for循环的最后一个JLabel。这个总是卡在JFrame的左边缘。

这是我的代码:

package test;

import java.awt.EventQueue;
import java.util.ArrayList;

import javax.swing.JFrame;
import javax.swing.JLabel;

public class MultipleLabelsTest {

    private JFrame frame;
    private ArrayList<JLabel> labels;

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

    /**
     * Create the application.
     */
    public MultipleLabelsTest() {
        initialize();
        labels = new ArrayList<JLabel>();
        createXTextBoxes(2);
    }

    private void createXTextBoxes(int i) {
        for (int j = 0; j < i; j++) {
            JLabel label = new JLabel("Number " + (j + 1));
            label.setBounds(30, (18 + 20*j), 200, 16);
            System.out.println(label.getBounds());
            frame.getContentPane().add(label);
            labels.add(label);
        }
    }

    /**
     * Initialize the contents of the frame.
     */
    private void initialize() {
        frame = new JFrame();
        frame.setBounds(100, 100, 450, 300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

}

以下是结果的屏幕截图:http://imgur.com/8GZkrl1 控制台输出:http://imgur.com/n6U3brN

知道为什么会这样吗?

提前致谢。

0 个答案:

没有答案