Я исправляю отображение шрифтов в одном из наших приложений Java Swing. Что изменилось после использования опции «-Dfile.encoding = UTF-8» во время выполнения.Monospace и UTF8
FontClass.jar - это пример файла jar-файла.
option 1:
javaw -Xmx256M -jar -Dfile.encoding=UTF-8 "FontClass.jar"
option 2:
javaw -Xmx256M -jar "FontClass.jar"
С опцией 1: я получаю моноширинный дисплей
С опцией 2: я получаю нон моноширинный дисплей.
Ограничение:
я) -Dfile.encoding = UTF-8 Этот вариант мы добавили, чтобы все наши потоки поддерживают поддержку UTF-8. Вместо изменения каждого потока вручную.
ii) Мы используем java swing frame work и во многих местах. Мы являемся шрифтом uisng default. Изменение всего этого - много работы.
Так что теперь у меня вопрос есть любой параметр командной строки с помощью которой я могу получить дисплей MONOSPACE с опцией 1:
Ниже приведен пример кода:
class Show extends Frame {
FontMetrics fontM;
String outString;
Show(String target, String title, Font font) {
setTitle(title);
outString = target;
fontM = getFontMetrics(font);
setFont(font);
int size = 0;
for (int i = 0; i < outString.length(); i++) {
size += fontM.charWidth(outString.charAt(i));
}
size += 24;
setSize(size, fontM.getHeight() + 60);
setLocation(getSize().width/2, getSize().height/2);
setVisible(true);
}
public void paint(Graphics g) {
Insets insets = getInsets();
int x = insets.left;
int y = insets.top;
g.drawString(outString, x + 6, y + fontM.getAscent() + 14);
}
}
public class Fontclass {
public static void main(String[] args) {
String jaString = new String("\u65e5\u672c\u8a9e\u6587\u5b57\u5217");
String inputString = "\niiii\naaaaiiii";
String displayString = jaString + " " + inputString;
Font font;
font = new Font("Courier",3, 24);
new Show(displayString, "Demo",font);
}
}
* "Ниже приведен пример кода:" * В чем вопрос? Почему код использует компоненты AWT, а не Swing? Пожалуйста, исправьте форматирование кода, с почти 700 rep. вы должны были это понять уже сейчас. –
В обоих случаях это выглядит точно так же ... –
Для меня и многих других в моей команде оба выглядят иначе. С опцией 1 Шрифт «Курьер» - «Курьер». Но с вариантом 2 Courier «выглядит как« Courier new » – vrbilgi