Я пытаюсь выделить одно слово (переменную) в окне сообщения жирным шрифтом в моей программе на Java. Вот мой код:

int n = messageBox.showConfirmDialog(frame,
"The File "+ file +" already exists." +
"\n" + "Do you want to replace it?",
"File Already Exists!",
messageBox.YES_NO_OPTION);

Я хочу, чтобы переменная «файл» выделялась полужирным шрифтом в моем окне сообщения. До сих пор мне удавалось выделить только все окно сообщения полужирным шрифтом или вообще ничего. Как мне это сделать?

1
ubiquibacon 14 Мар 2010 в 05:23

2 ответа

Лучший ответ

Попробуйте заключить текст в теги HTML. Многие компоненты Swing поддерживают базовый HTML-код, например курсив, полужирный шрифт и подчеркивание. Например, вы должны изменить свой код следующим образом:

int n = messageBox.showConfirmDialog(frame,
"<html>The File <b>"+ file +"</b> already exists." +
"\n" + "Do you want to replace it?</html>",
"File Already Exists!",
messageBox.YES_NO_OPTION);
2
Richard Walton 14 Мар 2010 в 05:26
Хорошая идея, но здесь она не работает даже при импортированном javax.swing.text.html.HTML.Tag.
 – 
ubiquibacon
14 Мар 2010 в 05:45
Какую OS / JRE вы используете? У меня этот оператор работает (в Vista / JRE 1.6_u13).
 – 
Ash
14 Мар 2010 в 06:02
Моя ОС - W7X64. У меня установлен JDK 1.6.0_17 как для 32-, так и для 64-разрядной версии (оба из них поставляются с соответствующими версиями JRE 1.6.0_17). Я использую NetBeans и полагаюсь на 32-битные JDK и JRE.
 – 
ubiquibacon
14 Мар 2010 в 06:34
Спасибо за вашу помощь, ваш ответ был правильным, я просто не понимал, что мой текст по умолчанию выделен жирным шрифтом в окне сообщения. Вместо этого я просто выделил курсивом.
 – 
ubiquibacon
14 Мар 2010 в 10:45

У меня отлично работает HTML. Проблема в том, что шрифт по умолчанию уже выделен жирным шрифтом, поэтому вы не видите другого.

Попробуйте использовать тег «курсив» или, может быть, тег «шрифт» и укажите другой цвет, чтобы увидеть разницу.

Или вместо передачи текстовой строки вы можете передать свой собственный JLabel с настраиваемым шрифтом. Что-то вроде:

String message = "<html>The File <b> file </b> already exists</html>";
JLabel label = new JLabel(message);
label.setFont( UIManager.getFont("TextField.font") );

int result = JOptionPane.showConfirmDialog(
    this,
    label,
    "File already exists!",
    JOptionPane.YES_NO_OPTION);
3
camickr 14 Мар 2010 в 06:06
Ха-ха, хороший улов! Я даже не догадывалась, что текст уже выделен жирным шрифтом! Спасибо всем!
 – 
ubiquibacon
14 Мар 2010 в 06:40
Технически другой парень решил мою проблему, я просто не понимал, что текст уже выделен жирным шрифтом. Если бы я мог принять оба ответа, я бы согласился. Поскольку вы очень заботитесь о баллах, я буду помнить вас, и когда я наберу достаточно очков, чтобы раздать, вы можете получить столько, сколько захотите ... Я думаю, вам придется подождать, пока я не получу 50 (если вы не знаете другого способа). Спасибо за вашу помощь.
 – 
ubiquibacon
14 Мар 2010 в 10:43
Действительно? Ваш ответ был «здесь не работает». Так что, если бы я не объяснил проблему и не предложил другие решения, вы бы все еще гадали. Дело не в очках, они ничего не стоят.
 – 
camickr
14 Мар 2010 в 19:16
2
Ой, Камикр, просто подумал, что скажу тебе, что эти моменты были хорошими. Ням-ням, так сытно. :)
 – 
Richard Walton
14 Мар 2010 в 21:24
Кармикр, если вопрос не в очках, для чего вы все еще пишете? Вы оба помогли мне, и разве вы не помогаете другим людям своим кодом, о чем этот сайт? Мир был бы довольно паршивым местом, если бы люди только помогали другим получать что-то взамен. Опять же, я оцениваю ваш вклад, поскольку, вероятно, мне потребовалось бы немного больше времени, чтобы понять, что мне просто нужно было вместо этого выделить курсивом.
 – 
ubiquibacon
14 Мар 2010 в 21:58