将JLabel的ArrayList添加到JPanel中

时间:2016-02-17 15:27:26

标签: java arraylist

我正在尝试使用Java,我在程序执行时创建了一个在屏幕上弹出的JFrame。

我还创建了一个JLabel的ArrayList和一个for循环,以递归方式将JLabel添加到数组中。

到目前为止,我认为'我已经成功了,但现在我希望能够使用这个ArrayList以递归方式将ArrayList的元素添加到我的Jframe中的可视化JLabel中。

这是我的整个代码(它很小)

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); 
}
}

提前感谢能够提供帮助的任何人。

2 个答案:

答案 0 :(得分:1)

你可以编写一个迭代遍历arraylist中每个JLabel的循环,并将它们添加到JPanel(然后添加到JFrame)。

JPanel p = new JPanel();    
for(JLabel j:label){
    p.add(j);
}
view.add(p);

答案 1 :(得分:0)

我知道这已经晚了 4 年,但我最近遇到了类似的问题,所以这是为遇到此类问题的人准备的。在将 JPanel 'p' 添加到 JFrame 'view' 后,您需要调用 view.revalidate() 和 view.repaint() 。我在使用和不使用重新验证和重新绘制的情况下运行了代码,当我调用这些方法时它确实可以工作。