问题
I get very thin progress bar on **windows server 2012 ** , when I use
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
The bar look okay in windows 7, very thin on windows server 2012.
java version every where is (both JDK and JRE) 1.6.0_25, 32 bit

Here is the full code to demonstrate a problem (or documentation issue) I am on jdk 1.6.0_25
package demos;
import javax.swing.*;
import javax.swing.plaf.metal.DefaultMetalTheme;
import javax.swing.plaf.metal.MetalLookAndFeel;
import java.awt.*;
public class ProgressBarLookAndFeelDemo {
private void createAndShowGUI() {
//Create and set up the window.
JFrame frame = new JFrame("FrameDemo");
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
JPanel progPanel = new JPanel();
progPanel.setLayout(new GridBagLayout());
frame.getContentPane().add(progPanel, BorderLayout.CENTER);
//
JProgressBar progressBar = new JProgressBar();
progressBar.setIndeterminate(true);
progPanel.add(progressBar);
//Display the window.
frame.pack();
frame.setVisible(true);
}
public void showUI(String name) throws ClassNotFoundException, UnsupportedLookAndFeelException, InstantiationException, IllegalAccessException {
MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
if ( name.equalsIgnoreCase("system")) {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
public static void main(String[] args) throws
ClassNotFoundException, UnsupportedLookAndFeelException,
InstantiationException, IllegalAccessException {
if (args.length <1 ) {
System.out.println("usage : One argument is expected none|system");
throw new IllegalArgumentException("java classname none|system");
}
new ProgressBarLookAndFeelDemo().showUI(args[0]);
}
}
This is possibly a windows 2012 behavior, but I could not see any documentation related to it.
回答1:
I'm hope that there isn't issue with 32b and 64b version
JDK_1.6_022 32b



JDK_1.7_011 64b



from code
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.GridBagLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.UIManager;
import javax.swing.UIManager.LookAndFeelInfo;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.WindowConstants;
public class ProgressBarLookAndFeelDemo {
public ProgressBarLookAndFeelDemo() {
JProgressBar progressBar = new JProgressBar();
progressBar.setIndeterminate(true);
JProgressBar progressBar1 = new JProgressBar();
progressBar1.setValue(66);
JPanel progPanel = new JPanel();
progPanel.setLayout(new GridBagLayout());
progPanel.add(progressBar);
progPanel.add(progressBar1);
JFrame frame = new JFrame("Frame Demo");
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.add(progPanel, BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
System.out.println(info.getName());
if ("Nimbus".equals(info.getName())) {
UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (UnsupportedLookAndFeelException e) {
// handle exception
} catch (ClassNotFoundException e) {
// handle exception
} catch (InstantiationException e) {
// handle exception
} catch (IllegalAccessException e) {
// handle exception
}/**/
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new ProgressBarLookAndFeelDemo();
}
});
}
}
来源:https://stackoverflow.com/questions/15494812/java-look-and-feel-windows-server-2012-shows-progress-bar-too-thin