2011-11-28 12 views
5

Tôi không thể xem các nhãn mà được tạo ra dynamically.The mã như sau:JLabel mảng không hiển thị trong NetBeans trong khi tạo ra động

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

1.) shift this.setVisible after for loop. 2.) Hãy thử gọi jPanel1.validate()/repaint() sau khi thêm lable vào nó. (Có thể không cần thiết nếu bạn di chuyển setVisible ở cuối.) Ngoài ra có một dấu ngoặc đóng thêm trong mã đăng xin vui lòng loại bỏ nó. –

+0

@HarryJoy thx .. – abc

Trả lời

4

Có thể có một hoặc nhiều nguyên nhân gây ra sự cố của bạn
1. JPanel của bạn có thể không được thêm vào Vùng chứa. Thêm nó bằng cách sử dụng getContentPane(). Add (jpanel1);
2. Bản thân nhãn JLabel của bạn không hiển thị. Đặt thuộc tính hiển thị của chúng thành true.
3. JPanel của bạn không có flowlayout nhưng CardLayout và do đó chúng có thể được hiển thị ở mặt sau của thành phần khác. Gán bố trí bằng cách sử dụng jpanel1.setLayout (new FlowLayout())
4. Shift this.setVisible (true) thành vòng lặp bên ngoài.

+0

thx tôi cũng bỏ lỡ điểm thứ hai. – abc

+2

* "Bản thân JLabel của bạn không hiển thị. Đặt thuộc tính hiển thị của chúng thành đúng". * Các thành phần được thêm vào vùng chứa được hiển thị theo mặc định. Vì vậy, không, đây không phải là nguyên nhân của vấn đề. * "JPanel của bạn không có flowlayout nhưng GridLayout." * Điều đó sẽ làm cho không có sự khác biệt ở đây. Bố cục có thể hiển thị nhiều thành phần. –

+0

Cảm ơn. Tôi nhớ viết "CardLayout" thay vì GridLayout. Vui lòng xem điểm Editted của tôi số: 3 – NavSoft

0

bố trí gì được bạn có cho đối tượng JPanel của bạn? hãy thử thay đổi bố cục của nó để nói, FlowLayout. Cung cấp cho nó bố trí ở đầu, nơi bạn xác định nó và sau đó sử dụng nó trong vòng lặp của bạn.

Các vấn đề liên quan