println в диалоге с нелатинским символом

Поэтому я хочу напечатать в диалоге библиотеки ACM символ с неанглийского языка в Java, но когда я его запускаю, появляются только маленькие квадраты.

 IODialog dialog = getDialog();
 dialog.println("ზაზა");

1 ответ

IODialog использует JOptionPane для своей реализации, поэтому он подвержен тем же проблемам обработки Unicode, что и JOptionPane.

Здесь есть способ преодоления проблемы. Но нам не нравятся ссылки, поэтому позвольте мне подвести итог:

Согласно комментарию выше, игра со шрифтами - это то, что вы хотите изучить. Создайте новый шрифт, как это:

public class MyFont {

/*

  Below code I extracted from

  http://www.java-forums.org/java-tips/6522-swing-changing-component-default-font.html

  then i customized it.

 */

public static void setUIFont (javax.swing.plaf.FontUIResource f){

java.util.Enumeration keys = UIManager.getDefaults().keys();
while (keys.hasMoreElements()) {
  Object key = keys.nextElement();
  Object value = UIManager.get (key);
  if (value instanceof javax.swing.plaf.FontUIResource)
    UIManager.put (key, f);
  }
}
}

и затем вы устанавливаете фактический шрифт с тем шрифтом, который содержит ваши символы Юникода с этой строкой:

MyFont.setUIFont(new javax.swing.plaf.FontUIResource("Iskoola pota",Font.BOLD,18)); // setting the default font for application

Так что это делает, это меняет ваш шрифт по умолчанию. Вам больше не нужно ничего делать. Если вам нужно изменить свой шрифт по умолчанию до того, как вы его сделаете, то вам нужно сбросить шрифт по умолчанию таким образом.

Другие вопросы по тегам