2013-04-09 34 views
22

Tôi đang cố gắng tạo một JLabel được gạch chân. Tôi đã tìm kiếm khắp mọi nơi, nhưng tôi chẳng có gì cả. Ngay cả trong các thuộc tính, không có tùy chọn cho gạch chân JLabel. Tôi có thể làm gì?JLabel được gạch chân

+1

đâu mã? –

Trả lời

36
JLabel label = new JLabel("<HTML><U>YOUR TEXT HERE</U></HTML>"); 
label.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); 

HOẶC

JLabel label = new JLabel("Underlined Label"); 
Font font = label.getFont(); 
Map attributes = font.getAttributes(); 
attributes.put(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON); 
label.setFont(font.deriveFont(attributes)); 
+15

Đừng quên đóng thẻ của bạn! – Clark

+2

@Clark nó không quan trọng – khandelwaldeval

+3

@ devaldcool, ngay cả khi nó không quan trọng, một thực hành tốt nên được theo sau ít nhất là để tạo ra thói quen tốt. Mã hóa bất cẩn là con đường dẫn đến mặt tối. Mã hóa bất cẩn dẫn đến thói quen xấu. Thói quen xấu dẫn đến mã bị hỏng. Mã bị hỏng dẫn đến đau khổ. – hfontanez

32
JLabel label = new JLabel("Underlined Label"); 
Font font = label.getFont(); 
Map attributes = font.getAttributes(); 
attributes.put(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON); 
label.setFont(font.deriveFont(attributes)); 
+3

+1, để hiển thị nhanh hơn, sau đó sử dụng HTML – camickr

+4

+1. Ngoài ra, label.getText() bây giờ sẽ trả về văn bản thực tế, dự định thay vì đánh dấu HTML. – splungebob

+1

Sử dụng tốt hơn 'Bản đồ attributes = new HashMap <> (font.getAttributes());' để tránh cảnh báo trình biên dịch 'bỏ chọn cuộc gọi để đặt (k v) (...) '. – Petschko