Стиль Windows для JFileChooser

Я пытаюсь генерировать a JFileChooser это имеет стиль Windows. Я не мог найти, что метод изменил его, таким образом, я создал базовый класс, который расширяется JFileChooser это изменяет UI со следующим кодом:

public FileChooser(){
  this(null);
}
public FileChooser(String path){
   super(path);
   try {
      UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");

    } catch (Exception e) { System.err.println("Error: " + e.getMessage()); }

Затем в другом классе я звоню

FileChooser chooser = new FileChooser(fileName);
int val = chooser.showOpenDialog(null);

но диалоговое окно, которое подходит, имеет стиль Java. Какие-либо мысли о том, как изменить это? Существует ли метод класса JFileChooser, который я могу использовать вместо этого расширенного класса?

Спасибо!

9
задан chama 17 February 2010 в 16:03
поделиться

3 ответа

Я предлагаю использовать утилиты java.util.concurrent, особенно класс AtomicLong. См. связанный javadoc

-121--2333949-

Перегрузка группы метод, который принимает IEqualityComparer как параметр, но есть ли эквивалентно использованию предложения group?

Вы всегда можете сгруппировать по анонимному типу, если вам просто нужно быстрое встроенное решение и вы не беспокоитесь о том, чтобы набрать точный тип для ключей:

var grouped =
  from it in items 
  group it by new {it.Coordinate.Latitude, it.Coordinate.Longitude};
-121--2793608-

Если вам не нужно менять Look and Feel, не могли бы вы попробовать поместить UIManager.setLookAndFeel

Это, кажется, работает для меня, хотя я в проигрыше в том, почему это не сработает путь вы настроили это.

7
ответ дан 4 December 2019 в 07:23
поделиться

Проблема в том, что внешний вид уже был выбран для вас, когда вы вызывали super (путь) .

Из Учебное пособие по Java для Look and Feel :

Примечание : если вы собираетесь установить L&F, вы должны сделать это как самый первый шаг в ваше приложение. В противном случае вы рискуете инициализировать Java L&F независимо от того, какой L&F вы запросили. Это может произойти непреднамеренно, когда статическое поле ссылается на класс Swing, что вызывает загрузку L&F. Если L&F еще не задано, загружается значение по умолчанию L&F для JRE. Для Sun JRE по умолчанию используется Java L&F, для Apple JRE - Apple L&F и так далее .

Чтобы исправить это, сделайте следующее ( объяснение расположено здесь ) - замените блок try / catch на этот код:

UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
SwingUtilities.updateComponentTreeUI(this);
this.pack();
4
ответ дан 4 December 2019 в 07:23
поделиться

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

 java -Dswing.defaultlaf=com.sun.java.swing.plaf.windows.WindowsLookAndFeel YourApp

Если он действительно применяет правильный внешний вид, вы можете добавить код внешнего вида в программу перед созданием диалогового окна JFileChooser. Допустим, простая программа могла бы выглядеть так:

 public static void main(String[] args) {
try {

    UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");

} 
catch (Exception e) {
   // handle exception
}

JFileChooser chooser = new JFileChooser(); 
//etc
}
4
ответ дан 4 December 2019 в 07:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: