java look and feel: windows server 2012 shows progress bar too thin

纵然是瞬间 提交于 2019-12-24 09:16:04

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!