Java 如何使不确定进度条看起来很漂亮?

Java 如何使不确定进度条看起来很漂亮?,java,swing,progress-bar,jprogressbar,nimbus,Java,Swing,Progress Bar,Jprogressbar,Nimbus,我用的是nimbus lookAndFill UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel"); 我的不确定JProgressBar如下所示: 我能让它看起来更好吗?你可以选择或。你可以选择或。有一个更简单的解决方案。您只需在设置nimbus外观之前复制进度条UI默认值,然后在设置之后将其设置回原来的状态。然后,您将获得Nimbus外观,但没有其进度条样式 // copy progress

我用的是nimbus lookAndFill

UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
我的不确定JProgressBar如下所示:


我能让它看起来更好吗?

你可以选择或。

你可以选择或。

有一个更简单的解决方案。您只需在设置nimbus外观之前复制进度条UI默认值,然后在设置之后将其设置回原来的状态。然后,您将获得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());
}

有一个更简单的解决办法。您只需在设置nimbus外观之前复制进度条UI默认值,然后在设置之后将其设置回原来的状态。然后,您将获得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());
}

你可以写你自己的UI委派你可以写你自己的UI委派只是想保留这个l&F,但是用另一个用于进度barPhilip的答案就可以了,我没想到,这是一个简单得多的解决方案,只是想保留这个l&F,但用另一个用于进度barPhilip的答案就可以了,我没想到,这是一个更简单的解决方案,我找到了最好的解决方案,基于您的//设置NimbusLookAndFeel UIManager.SetLookandFeel新建NimbusLookAndFeel;//设置其他进度条l&f processingJProgressBar.**setUI**new WebProgressBarUI;我找到了最好的解决方案,基于您的//设置NimbusLookAndFeel UIManager.SetLookandFeel新建NimbusLookAndFeel;//设置其他进度条l&f processingJProgressBar.**setUI**new WebProgressBarUI;