gpt4 book ai didi

java - JProgressBar 不只在 Mac 上使用 Java 1.7 进行动画处理

转载 作者:行者123 更新时间:2023-11-30 11:36:16 24 4
gpt4 key购买 nike

下面是一些在 EDT 上创建和显示 JProgressBar 的代码。在 Apple 的 Java 6 上,进度条是动态的。在 Oracle 的 Java 7 上,它不会:

import javax.swing.*;

public class ScratchSpace {

public static void main(String[] args) {

System.out.println("java.version = " + System.getProperty("java.version"));
System.out.println("java.vm.version = " + System.getProperty("java.vm.version"));

SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JProgressBar progressBar = new JProgressBar();
progressBar.setIndeterminate(true);

JFrame frame = new JFrame();
frame.getContentPane().add(progressBar);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});

}
}

准确地说,我使用的是 Java 1.7.0_12-ea 和 OS X 10.8.3。

你能看出我做错了什么吗?如果没有,是否有解决方法?

编辑:这里是文本输出:

java.version = 1.7.0_12-ea
java.vm.version = 24.0-b27

编辑:it seems to be a known problem

所以现在我的问题是:我该如何解决这个问题?

最佳答案

由于这是一个已确认的 JRE 错误,因此变通办法将非常棘手。

如果您只是在不确定模式下使用进度条(换句话说,您不需要显示实际进度,只是有一个长时间运行的任务),请尝试使用 SwingX的 JXBusyLabel 代替。 (注意:祝你找到文档好运......如今所有链接似乎都已损坏)

如果这不是一个选项,您可以尝试使用计时器定期强制重新绘制的旧 VB6 方法。天真的实现:

import javax.swing.*;

public class ScratchSpace {

public static void main(String[] args) {

System.out.println("java.version = " + System.getProperty("java.version"));
System.out.println("java.vm.version = " + System.getProperty("java.vm.version"));

SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
final JProgressBar progressBar = new JProgressBar();
progressBar.setIndeterminate(true);

int delayMilliseconds = 250;
Timer repaintTimer = new javax.swing.Timer(delayMilliseconds, new ActionListener(){
@Override
public void actionPerformed(final ActionEvent ae) {
progressBar.repaint();
}
});
repaintTimer.start();

JFrame frame = new JFrame();
frame.getContentPane().add(progressBar);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
}

关于java - JProgressBar 不只在 Mac 上使用 Java 1.7 进行动画处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14596452/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com