как сделать так, чтобы неопределенный прогрессбар выглядел красиво?

Я использую nimbus lookAndFill

UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");

и мой неопределенный JProgressBar выглядит так:

http://img15.imageshack.us/img15/9470/uglyprogress.jpg

я могу сделать это выглядит лучше?


person Adir    schedule 13.05.2013    source источник
comment
Вы можете написать свой собственный делегат пользовательского интерфейса   -  person MadProgrammer    schedule 14.05.2013


Ответы (2)


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

// copy progress bar defaults
HashMap<Object, Object> progressDefaults = new HashMap<>();
for(Map.Entry<Object, Object> entry : UIManager.getDefaults().entrySet()){
    if(entry.getKey().getClass() == String.class && ((String)entry.getKey()).startsWith("ProgressBar")){
        progressDefaults.put(entry.getKey(), entry.getValue());
    }
}

// set nimbus
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");

// copy back progress bar defaults
for(Map.Entry<Object, Object> entry : progressDefaults.entrySet()){
    UIManager.getDefaults().put(entry.getKey(), entry.getValue());
}
person Philip Welch    schedule 09.10.2013
comment
Я нашел лучшее решение, основанное на вашем! //настройка NimbusLookAndFeel ‹br› UIManager.setLookAndFeel(new NimbusLookAndFeel()); // установка другого индикатора выполнения l&f ‹br› processingJProgressBar.**setUI**(new WebProgressBarUI()); - person Adir; 12.10.2013

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

person 0x6C38    schedule 13.05.2013
comment
Просто хотел сохранить этот l&F, но использовать другой для индикатора выполнения - person Adir; 12.10.2013
comment
Ответ Филиппа сделает это, я не думал об этом, это тоже гораздо более простое решение - person 0x6C38; 12.10.2013