2015-08-29 2 views
0

У меня есть JLabel с некоторым текстом в нем. Этот JLabel занимает всю нижнюю часть моего JFrame. Я изменил его фон на желтый, а вся нижняя сторона стала желтой. Есть ли способ сделать это похожим на текст, который находится внутри JLabel, «подсвечивается» только цветом, имеющим желтый цвет фона, а остальные имеют другой цвет? Верхняя часть моего JFrame - JPanel.Могу ли я выделить текст в JLabel?

combo.addItemListener(new ItemChangeListener()); 
JPanel container = new JPanel(); 
container.setBackground(Color.BLUE); 

response.setFont(new Font("Times new Roman", Font.BOLD, 40)); 
response.setHorizontalAlignment(SwingConstants.CENTER); 

response.setBackground(Color.YELLOW); 
response.setOpaque(true); 
add(response , BorderLayout.CENTER); 
container.add(selectone); 
container.add(combo); 
this.add(container, BorderLayout.NORTH); 
+0

Из того, что я видел, не существует метода по умолчанию для такого использования, вы можете посмотреть этот пост: http://stackoverflow.com/questions/14376216/how-to-highlight-part-of-a -jlabel-at-runtime – Antoine

ответ

2

Существует очень простой способ сделать это - использовать HTML в тексте метки. Имейте в виду, Swing интерпретирует довольно old version HTML, который не соответствует сегодняшним стандартам.

JLabel response = new JLabel("<html><span bgcolor=\"yellow\">This is the label text</span></html>"); 

В настоящее время необходимо работать со списком стилей. Но если вы хотите это сделать, вам, вероятно, следует переключиться с Swing на JavaFX.

Дополнительную информацию об использовании HTML в компонентах Swing см. В разделе applicable part of the tutorial.

+0

Спасибо, это сработало. До сих пор я не знал, что вы можете добавлять HTML-команды в java! Не могли бы вы немного объяснить, как добавить HTML в Swing? Я буду отмечать вас как лучший ответ и как ваш ответ, как только я пойму. Благодарю. –

+0

Лейбл только имеет один фон. Фон вокруг метки является родительским компонентом, поэтому я предложил разворачивать панели. – camickr

+0

'Не могли бы вы объяснить немного о добавлении HTML в Swing?' - прочитайте учебник. Сколько раз вам нужно указывать на учебник по основам ??? Найдите содержимое трейла. 'Я буду отмечать вас как лучший ответ,' если это лучший ответ, тогда примите его сейчас, потому что на ваш «исходный вопрос» был дан ответ. – camickr

2

Используйте панель обертки, которая уважает предпочтительный размер этикетки:

JLabel label = new JLabel("..."); 
label.setOpaque(true); 
label.setBackground(...); 
JPanel wrapper = new JPanel(); 
wrapper.add(label); 
frame.add(wrapper, BorderLayout.CENTER); 

макета по умолчанию для JPanel является FlowLayout, который по горизонтали выровнено по центру.

Если вы хотите как горизонтальное, так и вертикальное центрирование, используйте GridBagLayout на панели с по умолчанию GrigBagConstraints, когда вы добавляете ярлык на панель.

+0

Хотя у вас не было лучшего ответа, я поблагодарил вас, отвечая на ваш ответ. Спасибо! –

Смежные вопросы