我想在按钮上创建一个数组的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:我重写了整个问题
答案 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。如果您希望继续使用空布局,则应将添加的标签设置为不同的位置,否则它们将彼此重叠。