Java 动态创建时,netbeans中不可见Jlabel数组

Java 动态创建时,netbeans中不可见Jlabel数组,java,swing,Java,Swing,我无法查看动态创建的标签。代码如下: JLabel[] labels = new javax.swing.JLabel[cur.length]; for (int i = 0 ;i < cur.length; i++) { System.out.println("in"); labels[i] = new JLabel( cur[i] ); labels[i].setText(""+cur[i]); jPanel1.add(labels[i]); this.

我无法查看动态创建的标签。代码如下:

JLabel[] labels = new javax.swing.JLabel[cur.length];
for (int i = 0 ;i < cur.length; i++)
{
   System.out.println("in");
   labels[i] = new JLabel( cur[i] );
    labels[i].setText(""+cur[i]);
   jPanel1.add(labels[i]);
   this.setVisible(true);
   }
 }
JLabel[]labels=newjavax.swing.JLabel[cur.length];
对于(int i=0;i
您的jPanel对象有什么布局?尝试将其布局更改为FlowLayout。在定义它的开始处给出它的布局,然后在循环中使用它。

问题可能有一个或多个原因
1.您的JPanel不能添加到容器中。使用getContentPane()添加它
2.您的JLabel本身不可见。将其visible属性设置为true。
3.您的JPanel没有flowlayout,而是CardLayout,因此它们可能在其他组件的后面可见。使用jpanel1.setLayout(newflowlayout())分配布局
4.将this.setVisible(true)移到外部循环。

1。)将this.setVisible移到for循环之后。2.)在添加标签后,尝试调用jPanel1.validate()/repaint()。(如果在末尾移动setVisible,则可能不需要)。此外,发布的代码中还有一个额外的右括号,请将其删除。“您的JLabel本身不可见。请将其visible属性设置为true。”添加到容器中的组件默认可见。所以不,这不是问题的原因。“您的JPanel没有flowlayout,而是GridLayout。”这在这里没有区别。任何一种布局都可以显示多个组件。谢谢。我忘了写“CardLayout”而不是GridLayout。请看我编辑的第三点