将 JLabels 的数组列表添加到 JPanel 中



我目前正在试验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()。我在有和没有重新验证和重新绘制的情况下运行了代码,当我调用这些方法时,它最终会起作用。

最新更新