我目前正在试验Java,在那里我创建了一个JFrame,以便在程序执行时在屏幕上弹出。
我还创建了一个 JLabels 的 ArrayList 和一个 for 循环,以递归方式将 JLabels 添加到数组中。
到目前为止,我"认为"我已经成功了,但现在我希望能够使用这个 ArrayList 将 ArrayList 的元素递归添加到我的 Jframe 中的可视 JLabels 中。
这是我的整个代码(它只是很小)
public class Executable {
private static JFrame view;
private static JLabel image;
public static void main(String[] args) {
view = new JFrame("adding labels");
view.setBounds(0,0,300,1000);
view.setLocationRelativeTo(null);
view.setVisible(true);
ArrayList<JLabel> label = new ArrayList<JLabel>();
for(int i=0; i < 20; i++) {
image = new JLabel("Test");
image.setText("image-icon-"+i);
image.setBounds(0,0,200,200);
image.setBackground(Color.green);
image.setOpaque(true);
label.add(image);
}
JPanel p = new JPanel();
for (JLabel j:label) {
p.add(j);
}
view.add(p);
}
}
提前感谢任何可以提供帮助的人。
你可以编写一个循环来迭代数组列表中的每个 JLabel,并将它们添加到 JPanel 中(然后将其添加到 JFrame)。
JPanel p = new JPanel();
for(JLabel j:label){
p.add(j);
}
view.add(p);
已经晚了 4 年,但我最近遇到了类似的问题,所以这是为那些遇到此类问题的人准备的。你需要调用 view.revalidate(),然后在将 JPanel 'p' 添加到 JFrame 'view' 之后调用 view.repaint()。我在有和没有重新验证和重新绘制的情况下运行了代码,当我调用这些方法时,它最终会起作用。