2012-02-15 52 views
9

Đã một thời gian kể từ khi tôi đặt câu hỏi!Java JLabel, ngắt dòng văn bản sang dòng tiếp theo?

Tôi đang phát triển một ứng dụng bằng Java nơi sử dụng JLabels. Dù sao, như bạn có thể hoặc không thể nhìn thấy từ hình dưới đây, các văn bản nói rằng Category Test bị cắt đứt và kết thúc lên nói Categor... thay thế. Có cách nào mà tôi có thể "phá vỡ" văn bản khi nó lấp đầy chiều rộng của nhãn không? Dưới đây là hình ảnh:

enter image description here

Những gì tôi đã làm

tôi đã sử dụng một JTextPane như vậy:

JTextPane text = new JTextPane(); 
    SimpleAttributeSet attr = new SimpleAttributeSet(); 

    StyleConstants.setAlignment(attr, StyleConstants.ALIGN_CENTER); 

    pane.add(text, c); 

Sau đó, tôi thêm vào văn bản của tôi, nhưng nhờ anyway!

+0

Tôi sẽ nhận được chuỗi "Danh mục" từ đó. Nó hoàn toàn không cần thiết. Thay vào đó, có thể có "Danh mục" trong một JLabel duy nhất phía trên lưới của bạn. –

+0

Uhhh, đó là trình giữ chỗ. Người dùng sẽ xác định những gì các loại nói. Bạn đã từng gặp Jeopardy chưa? –

Trả lời

10

JLabel s không thể làm điều đó theo mặc định. Nhưng JLabel s có một số hỗ trợ cho html, do đó, JLabel với văn bản <html>First Line<br />Second Line</html> sẽ hiển thị trên hai dòng.

Nếu bạn muốn một thành phần có thể tự tách các dòng, hãy xem JTextArea.

+0

Tôi sẽ +1 ngay bây giờ, nhưng tôi muốn xem liệu tôi có thể tìm thấy một cách khác hay không. Cảm ơn. –

+0

@Ken đã tìm kiếm nhiều hơn, dòng 'chỉ hiển thị của JLabel', trừ khi bạn sử dụng html. – Jeffrey

+0

D: Vâng, tôi sẽ xem những gì tôi có thể làm; cảm ơn nhiều! –

2

Khi tôi nhớ lại, bạn cần sử dụng JTextArea nếu bạn muốn textwrap. JLabel không làm điều đó.

1

Bạn có thể ở thành phần StyledLabel từ dự án nguồn mở lớp chung của JIDE tại http://java.net/projects/jide-oss/.

Sự cố với cách tiếp cận JLabel html là nó không tự động quấn và chậm hơn khoảng 20 đến 40 lần so với JLabel thuần túy.

Sự cố với phương pháp JTextArea hoặc JTextPane là có vấn đề về kích thước lạ và chậm hơn 20 lần.

StyledLabel mở rộng JLabel. Tự động gói dòng chỉ là một trong nhiều tính năng mà nó thêm vào. Và hiệu suất nhanh như một JLabel đơn giản.

Hy vọng điều đó sẽ hữu ích.

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