我正在尝试使用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);
}
}
提前感谢能够提供帮助的任何人。
答案 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() 。我在使用和不使用重新验证和重新绘制的情况下运行了代码,当我调用这些方法时它确实可以工作。