在Button按钮上创建JLabel-Array

时间:2015-04-06 16:19:28

标签: java arrays swing jbutton jlabel

我想在按钮上创建一个数组的JLabel。我永远不会使用Arrays做某事,所以也许它是某种训练。我尝试过,但它没有工作。预期结果:每次按下按钮,都会创建20个JLabel中的一个。 这是我的班级:

public class JLabelArray {

static JFrame frame;

static JButton button;

public static void main(String[] args) {

    final JLabel[] label = new JLabel[20];

    //
    button = new JButton("push me");
    button.setBounds(0, 0, 100, 30);
    button.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            // This is where a new JLabel should be created
            for (int i = 0; i < label.length; i++) {
                label[i] = new JLabel("Label" + i);
                label[i].setBounds(button.getX(), button.getY()+ 10 + i * 15, 50, 50);
                frame.add(label[i]);
                frame.revalidate();
                frame.repaint();
            }
        }
    });
    //

    frame = new JFrame();
    frame.setSize(500, 500);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setLayout(null);
    frame.setVisible(true);
    frame.add(button);

}

}

编辑:更新的代码
EDIT2:更新for-loop
编辑3:我重写了整个问题

1 个答案:

答案 0 :(得分:0)

在验证父容器后添加组件时应该重新验证/重新绘制 - 这不仅包括添加JButton(在将JFrame设置为可见之前添加它),还包括添加JLabels < / p>

            frame.add(label[i]);
            frame.revalidate();
            frame.repaint();

我还建议不要使用空布局,而是选择合适的LayoutManager:参见https://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html。如果您希望继续使用空布局,则应将添加的标签设置为不同的位置,否则它们将彼此重叠。