Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как узнать системный размер шрифта 
:(
    Опции темы
Forsaken
Дата 20.3.2010, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 30.12.2008

Репутация: нет
Всего: 3



Здравствуйте.
Скажите пожалуйста, как можно определить системный размер шрифта, текущей OS. Дело в том что размер шрифта выбранный по умолчанию очень маленький. Особенно для темы Windows.
PM MAIL   Вверх
dorogoyIV
Дата 20.3.2010, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 36
Всего: 46



в джава программе:
Код

 JComponent#getFont().getSize()


PM MAIL   Вверх
Forsaken
Дата 20.3.2010, 14:49 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 30.12.2008

Репутация: нет
Всего: 3



dorogoyIV 
Да ну ладно, не шутите так..) Мне же нужен размер шрифта не компонента, а настроек виндовса, потому что сам Swing устанавливает свой, очень маленький. На мониторах с высоким разрешением хоть в лупу разглядывай.
К сожалению мне ничего неудается найти, я боюсь что ни как это сделать нельзя... К сожалению если это так, то Swing мало пригоден для интерфейсов
PM MAIL   Вверх
dorogoyIV
Дата 20.3.2010, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 36
Всего: 46



так тебе LookAndFeel выходит нужен ?
PM MAIL   Вверх
jk1
Дата 20.3.2010, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 21
Всего: 75



Цитата

К сожалению если это так

Это не так. Swing сам по себе никаких шрифтов не устанавливает, а берет значения из свойств текущего LookAndFeel.
Для примера привожу список свойств для Nimbus LAF. 

Есть два основных пути решения проблемы:

1) Способ простой. Выберите LAF, который вам понравится на внешний вид и пользуйтесь им.
2) Способ посложнее. Переопределяете соответствующее свойства вашего LAF:
Код

UIManager.put("key","value");


Вот еще хорошая статья на эту тему http://www.jasperpotts.com/blog/2008/08/ni...ger-uidefaults/


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
Forsaken
Дата 20.3.2010, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 30.12.2008

Репутация: нет
Всего: 3



Не, у меня проблема немного другая.. я бы хотел использовать стиль Windows для Windows. Но хотелбы чтобы все шрифты в моем UI были выбранные пользователем в его виндовсе. Т.е. у меня стоит 9pt при 115dpi, и у моего UI тоже должен быть такой шрифт, а у другого пользователя соответственно  -под его настройки.
PM MAIL   Вверх
dorogoyIV
Дата 20.3.2010, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 36
Всего: 46



Цитата(Forsaken @  20.3.2010,  18:31 Найти цитируемый пост)
Но хотелбы чтобы все шрифты в моем UI были выбранные пользователем в его виндовсе.

ты немного не догоняешь...
системный шрифт ставит система, а не прога. можно нагло изменить его.
или я не догоняю...  smile 
PM MAIL   Вверх
jk1
Дата 20.3.2010, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 21
Всего: 75



Forsaken, 

интересная задачка, ничего не скажешь. Вроде бы есть способ получить шрифты от системы. Дальше их можно назначить в LAF (как, см. выше) и тогда твое приложение будет использовать заданные пользователем в операционной системе шрифты.


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
dorogoyIV
Дата 21.3.2010, 03:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 36
Всего: 46



для windows xp:
если щелкнуть правой кнопкой по рабочему столу,
выбрать свойства,
вкладка "оформление",
кнопка "дополнительно",
то можно увидеть, что винда может применять разные шрифты для разных элементов.

помоему, будет лучше добавить в твоем фрейме возможность менять шрифт (пример есть в demo from JVM)

пишешь рекурсивный метод:
Код

 private void changeFont(Container cont)
 {
  // все компоненты swing являются контейнерами
  Component [] comps = cont.getComponents();

  for(int i = 0; i < comps.length; i++)
  {
   comps [i].setFont(your font);
   comps [i].updateUI();
   changeFont((Container)comps [i]);
  }
 }

метод не проверял, возможны ошибки  smile 

Это сообщение отредактировал(а) dorogoyIV - 21.3.2010, 03:26
PM MAIL   Вверх
Forsaken
Дата 21.3.2010, 08:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 30.12.2008

Репутация: нет
Всего: 3



jk1, 
Спасибо! Попробую сделать как Вы советуете. 
Вообще Nimbus красивая тема, только расстраивает один момент в ней (и в Metal тоже).. Окна диалога полученный с помощью JFileChooser  расстраивают, потому что значки зарегистрированных типов файлов отображаются одним и тем же значком, а хотелось бы чтобы были значки как в виндовсовском диалоге (правда это не критично). Еще непонятно выглядит во всех темах, то что есть кнопка создать папку, а удалить уже ни как. И третий момент, я не знаю пока как локализовать надписи в диалоге JFileChooser для языков отличных от английского.

dorogoyIV
Виндовс малость лукавит, вот что предлагает получать WinAPI функция SystemParametersInfo() 
Код

typedef struct tagNONCLIENTMETRICS {
  UINT    cbSize;
  int     iBorderWidth;
  int     iScrollWidth;
  int     iScrollHeight;
  int     iCaptionWidth;
  int     iCaptionHeight;
  LOGFONT lfCaptionFont;
  int     iSmCaptionWidth;
  int     iSmCaptionHeight;
  LOGFONT lfSmCaptionFont;
  int     iMenuWidth;
  int     iMenuHeight;
  LOGFONT lfMenuFont;
  LOGFONT lfStatusFont;
  LOGFONT lfMessageFont;
#if (WINVER >= 0x0600)
  int     iPaddedBorderWidth;
#endif 
} NONCLIENTMETRICS, *LPNONCLIENTMETRICS;


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

dorogoyIV 
jk1

Большое спасибо за помощь!
PM MAIL   Вверх
jk1
Дата 21.3.2010, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 21
Всего: 75



Простейший вариант локализации JFileChooser выглядит так
Код

Map<String, Object> localizedValues = GlobalStrings.getLocaleHashMap();    
for (Object aKey : localizedValues.keySet()) {    
    UIManager.put(aKey, localizedValues.get(aKey.toString()));    
}

Код

    static HashMap<String, Object> getLocaleHashMap() {
        HashMap<String, Object> map = new HashMap<String, Object>();
        map.put("FileChooser.filesOfTypeLabelText", "Тип файла");
        map.put("FileChooser.lookInLabelText", "Искать в");
        map.put("FileChooser.upFolderToolTipText", "Переход на один уровень вверх");
        map.put("FileChooser.fileNameLabelText", "Имя файла");
        map.put("FileChooser.homeFolderToolTipText", "Переход в домашнюю папку");
        map.put("FileChooser.newFolderToolTipText", "Создание нового каталога в текущей папке");
        map.put("FileChooser.listViewButtonToolTipTextlist", "Показать в виде списка");
        map.put("FileChooser.detailsViewButtonToolTipText", "Подробный вид");
        map.put("FileChooser.saveButtonText", "Сохранить");
        map.put("FileChooser.openButtonText", "Открыть");
        map.put("FileChooser.cancelButtonText", "Отменить");
        map.put("FileChooser.updateButtonText", "Сохранить изменения");
        map.put("FileChooser.helpButtonText", "Помощь");
        map.put("FileChooser.saveButtonToolTipText", "Сохранение в выбранной папке");
        map.put("FileChooser.openButtonToolTipText", "Открытие выбранного файла");
        map.put("FileChooser.cancelButtonToolTipText", "Закрытие диалога и возврат к предыдущему окну");
        map.put("FileChooser.updateButtonToolTipText", "Сохранение сделанных изменений");
        map.put("FileChooser.helpButtonToolTipText", "Посмотр файла помощи");
        map.put("FileChooser.fileNameHeaderText", "Имя");
        map.put("FileChooser.fileSizeHeaderText", "Размер");
        map.put("FileChooser.fileTypeHeaderText", "Тип");
        map.put("FileChooser.fileDateHeaderText", "Изменен");
        map.put("FileChooser.fileAttrHeaderText", "Атрибуты");
        map.put("OptionPane.cancelButtonText", "Отменить");
        map.put("OptionPane.yesButtonText", "Да");
        map.put("OptionPane.noButtonText", "Нет");
        return map;
    }

Если требуется несколько языков, цепляйте .properties файлы


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
Forsaken
Дата 21.3.2010, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 30.12.2008

Репутация: нет
Всего: 3



jk1, 
Теперь ясно.. Я похоже сильно забегаю вперед...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0516 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.