有没有办法从ProgressMonitor模式进行对话?
编辑:
JAVA API中的ProgressMonitor类将带来一个顶部但不是Modal的对话框.用户仍然可以访问后台GUI.我正在寻找一个模态对话框来显示进度,并允许用户在中间停止任务.
我已经JProgressBar使用了一段时间WindowsLookAndFeel,但我发现与本机进度条有一些重大差异:
这是原生酒吧,处于常规状态:

虽然这是Java的:

锐利的眼睛可能会看到java的顶部白色更亮,绿色也更亮一点.本机也是"填充",而Java的边框是空的.
现在,本机不确定:

和Java的:

闪烁更短,更快(未显示).此外,由于本机看起来像一个发光,Java看起来很像一个"彗星"(尾巴,只有一侧......).
我的最后一个问题,被阻止的栏:

这可以用Java完成吗?
我有这些进度条:

我正在尝试设置进度条的TEXT颜色,而不更改背景颜色或进度条本身的颜色.据我所知,setForeground()设置文本和条形颜色?有没有办法做一个没有另一个?
我最近开始使用JavaFX,并开始制作我的自定义Swing组件的FX版本.其中一个是倒计时器,其中JProgressBar涉及一个.我会使用它的setString(String)方法将当前时间绘制到条形图上.不幸的是,JavaFX似乎没有这样的方法ProgressBar.我看到的最接近我正在寻找的是:
(来源)
我不知道这是否需要一个全新的自定义组件,或者只是一个类java.awt.Graphics.
任何帮助将非常感激.谢谢 :)
我在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);
}
}
Run Code Online (Sandbox Code Playgroud) 有没有人知道如何在使用Nimbus LookAndFeel时更改JProgressBar的颜色?
我只是想在进行长时间下载时在框架的左下角设置一个不确定的JProgressBar动画.
我看了很多教程,其中没有一个对我很清楚.我只是想在后台下载文件时让它具有动画效果.每个我试过这种方式,它不会动画进度条,直到后下载完成.
我需要帮助知道下载()调用的位置.
class MyFunClass extends JFrame {
JProgressBar progressBar = new JProgressBar();
public void buttonClicked() {
progressBar.setVisible(true);
progressBar.setIndeterminate(true);
SwingUtilities.invokeLater(new Runnable() {
public void run() {
progressBar.setIndeterminate(true);
progressBar.setVisible(true);
// Do I do my download() in here??
}});
// Do download() here???
progressBar.setVisible(false);
}
}
Run Code Online (Sandbox Code Playgroud)
提前致谢!
编辑:对于那些将来遇到类似问题的人来说,这是基本问题的基本解决方案.这不是我的代码,而是一般草图.内部buttonClicked():
public void buttonClicked() {
class MyWorker extends SwingWorker(String, Object) {
protected String doInBackground() {
progressBar.setVisible(true);
progressBar.setIndeterminate(true);
// Do my downloading code
return "Done."
}
protected void done() { …Run Code Online (Sandbox Code Playgroud) 这是我的启动画面代码,
public class SplashScreen extends JWindow {
private static final long serialVersionUID = 1L;
private BorderLayout borderLayout = new BorderLayout();
private JLabel imageLabel = new JLabel();
private JProgressBar progressBar = new JProgressBar(0, 100);
public SplashScreen(ImageIcon imageIcon) {
imageLabel.setIcon(imageIcon);
setLayout(borderLayout);
add(imageLabel, BorderLayout.CENTER);
add(progressBar, BorderLayout.SOUTH);
pack();
setLocationRelativeTo(null);
}
public void showScreen() {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
setVisible(true);
}
});
}
public void close() {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
setVisible(false);
dispose();
}
});
}
public void setProgress(final …Run Code Online (Sandbox Code Playgroud) 我正在使用Java功能从互联网上下载文件.
public void getLatestRelease()
{
try
{
// Function called
long startTime = System.currentTimeMillis();
// Open connection
System.out.println("Connecting...");
URL url = new URL(latestReleaseUrl);
url.openConnection();
// Download routine
InputStream reader = url.openStream();
FileOutputStream writer = new FileOutputStream("release.zip");
byte[] buffer = new byte[153600];
int totalBytesRead = 0;
int bytesRead = 0;
while ((bytesRead = reader.read(buffer)) > 0)
{
writer.write(buffer, 0, bytesRead);
buffer = new byte[153600];
totalBytesRead += bytesRead;
}
// Download finished
long endTime = System.currentTimeMillis();
// Output download information
System.out.println("Done.");
System.out.println((new …Run Code Online (Sandbox Code Playgroud) 我正在使用JProgressBar组件以及Nimbus UI Defaults.问题是,当我想手动更改每个进度条的条形颜色时,我BasicProgressBarUI通过设置JProgressBar.setUI()功能来使用.这会带来更多麻烦,因为我想改变条形颜色,似乎我松开了jprogressbar的默认外观(Border,backgroundcolor dissappears).
所以我可以UIDefaults在代码初始化时设置Nimbus ProgressBar.有用.
但我想动态更改每个进度条的条形颜色.
有没有其他方法可以改变条形颜色JProgressBar?
public class ProgressGenerator extends JFrame {
protected int minValue = 0;
protected int maxValue = 100;
protected int counter = 0;
protected JProgressBar progressBar;
public ProgressGenerator() {
super("JProgressBar Demo");
setSize(300, 100);
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
} catch (ClassNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (InstantiationException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IllegalAccessException e1) {
// …Run Code Online (Sandbox Code Playgroud) jprogressbar ×10
java ×9
swing ×9
nimbus ×2
progress-bar ×2
backend ×1
colors ×1
concurrency ×1
frontend ×1
invokelater ×1
javafx ×1
jdialog ×1
string ×1
swingworker ×1
uimanager ×1