2009-10-03 33 views

Trả lời

7

Câu trả lời ngắn gọn là có, như một JLabel là một Container, vì vậy nó có thể chấp nhận một Component (một JLabel là một lớp con của Component) để thêm vào JLabel bằng add phương pháp:

JLabel outsideLabel = new JLabel("Hello"); 
JLabel insideLabel = new JLabel("World"); 
outsideLabel.add(insideLabel); 

Trong đoạn mã trên, số insideLabel được thêm vào số outsideLabel.

Tuy nhiên, trực quan, nhãn có văn bản "Xin chào" xuất hiện, vì vậy, một nhãn không thể thực sự thấy nhãn nằm trong nhãn.

Vì vậy, câu hỏi đặt ra những gì người ta thực sự muốn thực hiện bằng cách thêm nhãn trên đầu nhãn khác.


Edit:

Từ nhận xét:

tốt, những gì tôi muốn làm là đầu tiên, đọc một phần nhỏ nào đó từ một tập tin, sau đó hiển thị rằng phần trong a nhãn. những gì tôi nghĩ là để chia phần thành 3 phần, sau đó sử dụng nhãn cho mỗi trong ba phần. sau đó thứ hai, tôi muốn có thể kéo phần nhỏ, vì vậy tôi nghĩ tôi có thể sử dụng một nhãn khác và đặt các nhãn '3mini jlabels' trên nhãn lớn. Tôi không biết nếu điều này sẽ làm việc mặc dù ..: |

Có vẻ như bạn nên xem xét cách sử dụng trình quản lý bố cục trong Java.

Một nơi tốt để bắt đầu sẽ là Using Layout ManagersA Visual Guide to Layout Managers, cả hai từ The Java Tutorials.

Có vẻ như một GridLayout có thể là một tùy chọn để thực hiện tác vụ.

JPanel p = new JPanel(new GridLayout(0, 1)); 
p.add(new JLabel("One")); 
p.add(new JLabel("Two")); 
p.add(new JLabel("Three")); 

Trong ví dụ trên, các JPanel được thực hiện để sử dụng một GridLayout như người quản lý bố trí, và được kể để thực hiện một dãy JLabel s.

+0

oh. hay quá cảm ơn! im không thực sự quen thuộc với những vì vậy tôi hỏi ở đây. :) – annaoj

+0

tốt, những gì tôi muốn làm là đầu tiên, đọc một phần nhất định từ một tập tin, sau đó hiển thị phần đó trong một nhãn. những gì tôi nghĩ là chia phần nhỏ thành 3 phần, sau đó sử dụng một nhãn cho từng phần ba. sau đó thứ hai, tôi muốn để có thể kéo phần, vì vậy tôi nghĩ rằng tôi có thể sử dụng một nhãn khác, và đặt 3'mini jlabels 'trên nhãn lớn. Tôi không biết nếu điều này sẽ làm việc mặc dù ..: | – annaoj

+0

nghe như thế này sẽ hoạt động .. cảm ơn, coobird! :) – annaoj

0

đó là vấn đề về bố cục. bạn có thể thực hiện điều đó bằng cách sử dụng bố trí rỗng (với vị trí được mã hóa cứng) hoặc với bố cục tùy chỉnh.

+0

Tôi đã cố gắng để làm điều này, nhưng nó không làm việc cho tôi. : c có lẽ tôi đang làm điều gì sai. tôi sẽ thử lại. cảm ơn Omry! – annaoj

+0

bạn có thể sử dụng hàm list() để có được kết xuất tốt đẹp của phân cấp vùng chứa hiện tại, sẽ giúp bạn gỡ lỗi sự cố của mình. –

+0

tuyệt vời! cảm ơn! tôi có nên gặp vấn đề một lần nữa không, tôi có thể đăng lại ở đây không? – annaoj

1

Câu trả lời cho câu hỏi ban đầu của bạn là có vì những lý do cho rằng bất kỳ Thành phần nào cũng có thể được thêm vào Vùng chứa.

Lý do bạn không nhìn thấy nhãn thứ hai là do mặc định JLabel sử dụng trình quản lý bố cục rỗng và kích thước của nhãn thứ hai là (0, 0) nên không có gì để vẽ. Vì vậy, tất cả những gì bạn cần làm là đặt các giới hạn của nhãn thứ hai và tránh xa bạn đi.Bạn không thể sử dụng trình quản lý bố cục nếu bạn muốn kéo các thành phần xung quanh vì ngay sau khi bạn đổi kích thước khung hình, trình quản lý bố cục sẽ được gọi và các thành phần sẽ được định vị lại dựa trên trình quản lý bố cục của thành phần.

+0

oh. nhưng có thể dán nhãn lên trên nhãn khác và có thể kéo cả hai nhãn là một không? : | – annaoj

+0

Nếu trình nghe chuột được thêm vào nhãn chính, thì tất cả các con cũng sẽ được kéo khi nó được di chuyển. – camickr

+0

oh .. nhưng một người bạn nói rằng nó không thể .. nói rằng tôi nên sử dụng một bảng điều khiển. wah. bây giờ im bị mất. : | – annaoj

0

bạn có thể sử dụng JLayeredPane và đặt đường viền của nó thành Không có đường viền.

+0

Tôi xin lỗi, đó là một cách dễ dàng nếu bạn sử dụng một nhà thiết kế! Giống như một trong Netbeans. –

0

bạn có thể thêm đặt chúng trên mỗi người khác bằng cách sử dụng sự chênh lệch ngang hoặc thẳng đứng (hgap, vgap) các thuộc tính của bố trí
JPanel p = new JPanel(new GridLayout(2, 1,-40,0)); //the 40 is the hgap , make it the same with the label height .