java - JProgressBar:低值不会显示

标签 java swing look-and-feel jprogressbar

我尝试了Java中JProgressBar的功能。但是有一个问题我无法解决:

当我将最小值设置为零,将最大值设置为 100,将当前值设置为 6 时,将不会显示任何内容。进度条是空的。如果我将 7 作为当前值,那么它就可以工作。这似乎是任何空白边框或其他空间的问题。此问题出现在 Windows 7 中,并且仅当 UIManager 设置为 SystemLookAndFeel 时。

有谁知道这个问题并有解决方案吗?下面是我的代码:

package lab;

import java.awt.FlowLayout;

import javax.swing.JDialog;
import javax.swing.JProgressBar;
import javax.swing.UIManager;

import core.Config;


public class ProgressSample extends JDialog {

public ProgressSample() {

    setDefaultCloseOperation(DISPOSE_ON_CLOSE);

    getContentPane().setLayout(new FlowLayout());

              // Nothing is displayed
    JProgressBar progressSix = new JProgressBar(0, 100);
    progressSix.setValue(6);
    getContentPane().add(progressSix);

              // This works
    JProgressBar progressSeven = new JProgressBar(0, 100);
    progressSeven.setValue(7);
    getContentPane().add(progressSeven);

    pack();
}

public static void main(String[] args) {

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

    ProgressSample dialogTest = new ProgressSample();
    dialogTest.setVisible(true);
}

}

最佳答案

Windows 原生外观进度条的 Java 代码以原始 Windows 进度条的方式使用 PROGRESSCHUNKSIZE 步骤呈现。请看the source for the Windows JProgressBar .

只是渲染不流畅。如果您踩下进度条,您可以看到 block 。

它可能是可定制的,但我不知道你将如何实现它。

问题的起源

最初的 Windows XP 进度条是在小方 block 中。 theme defined盒子的大小,以及盒子之间的间隙。对于 Vista 及更高版本,主题已更改为将框之间的间隙指定为 0,但不会将框的大小重置为 1 像素。通过 OpenThemeDataGetThemeInt Win32API 函数读取值显示我的主题的 block 大小为 6 (Windows 8).

关于java - JProgressBar:低值不会显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14560680/

相关文章:

java - 如何在反斜杠和下划线处分割java字符串

java - Java Swing 中的交互组件

java - JButton 未放置在与其 JPanel 相同的位置

java - 在 Nimbus L&F 中多次更改 JButton 背景颜色时出现问题

pdf - 使用 java 将 .mht 文件转换为 pdf 文件

java - HWPF-POI : inserting table in word with java

java - 如何打印字符的最大值?

java - 从直线嵌套抛物线

cocoa - 无限文档的滚动条?

java - JTable 行标题外观