Изменение внешнего вида индикатора выполнения Swing - PullRequest
2 голосов
/ 04 мая 2011

Я продолжаю пытаться изменить UIManager, чтобы эти глупо выглядящие зеленые квадраты исчезли.Как я могу изменить внешний вид этого для пользователя?Это зависит от системы?Кто-то еще, кто компилировал мой код, имел постоянный градиент.В идеале это просто сплошной квадрат, а не мелкие блоки.

Спасибо

enter image description here

Ответы [ 4 ]

4 голосов
/ 04 мая 2011

Вы пытались настроить его на внешний вид (пользовательский) системы?

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

try
{
    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch (Exception e)
{
    // ...
}

С учетом сказанного выше, похоже, тема Windows XP и действительно может быть тема системы (пользователя).Как правило, я избегаю пользовательских тем в графическом интерфейсе, если только нет очень веской причины (например, требования клиента / пользователя).

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

2 голосов
/ 16 марта 2013

«Эти глупо выглядящие зеленые квадраты» являются элементом Windows XP Look nad Feel.Если вы хотите, чтобы они выглядели по-разному, вы можете изменить внешний вид и стиль для этого конкретного компонента.

Просто используйте ниже обходной путь:

try {
    javax.swing.UIManager.setLookAndFeel(/* Look and Feel for your JProgressBar*/);
}
catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
    Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex);
}

MyProgressBar = new javax.swing.JProgressBar();

try {
    javax.swing.UIManager.setLookAndFeel(/* Previous, main Look and Feel */);
}
catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
    Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex);
}

Я использую этот код для придания JFileChooser другого видаи он отлично работает.

Вы просто изменяете внешний вид и внешний вид перед созданием компонента и восстанавливаете предыдущий сразу после его создания.

0 голосов
/ 15 августа 2011

Подробное описание внешнего вида Java можно найти в документе Sun Java, здесь: Руководство по проектированию Java, Look and Feel в формате pdf.

0 голосов
/ 05 мая 2011

Редактировать Код ниже изменить L & F всего JFrame.

static Main m;//Reference to JFrame to be updated
static String maxOSLookAndFeel = "ch.randelshofer.quaqua.QuaquaLookAndFeel";//Package of particular L&F    
private void MacOSLFjMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MacOSLFjMenuItemActionPerformed
                    // TODO add your handling code here:
                    SwingUtilities.invokeLater(new Runnable() {

                        public void run() {
                            try {
                                UIManager.setLookAndFeel(maxOSLookAndFeel);
                                SwingUtilities.updateComponentTreeUI(m);
                                m.validate();
                            } catch (ClassNotFoundException ex) {
                                Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
                            } catch (InstantiationException ex) {
                                Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
                            } catch (IllegalAccessException ex) {
                                Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
                            } catch (UnsupportedLookAndFeelException ex) {
                                Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
                            }
                        }
                    });

                }//GEN-LAST:event_MacOSLFjMenuItemActionPerformed

Secundo: По моему мнению (много гуглил и по опыту) невозможновлияет только на один JComponent, пока вы присоединяете новый L & F.Вы можете изменить свой L & F во всем JFrame или можете написать свой собственный компонент Swing.

Еще один способ достичь своей цели - изучить java исходный код и найти место, где JProgressBarИзображение добавляется в компонент и переопределяет этот метод, расширяя JProgressBar.

...