- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
请帮忙。该代码不起作用。进度条已创建,其中显示 0% 就这样。我对 java 不太了解。我正在寻求帮助。
原始代码:
jProgressBar1.setName("");
jProgressBar1.setValue(0);
jProgressBar1.setStringPainted(true);
jProgressBar1.addContainerListener(new java.awt.event.ContainerAdapter() {
public void componentAdded(java.awt.event.ContainerEvent evt) {
jProgressBar1ComponentAdded(evt);
}
});
private void jProgressBar1ComponentAdded(java.awt.event.ContainerEvent evt) {
Task tk = new Task();
tk.run();
}
class Task extends Thread {
public Task(){}
public void run(){
for(int i =0; i<= 100; i++){
final int progress = i;
SwingUtilities.invokeLater(new Runnable() {
public void run() {
jProgressBar1.setValue(progress);
}
});
}}}
最新代码:
import java.awt.event.ContainerAdapter;
import java.awt.event.ContainerEvent;
import javax.swing.*;
public class ini extends JFrame {
public ini() {
initComponents();
}
private void initComponents() {
setResizable(false);
jLabel1 = new JLabel();
jProgressBar1 = new JProgressBar(0,100);
jProgressBar1.addContainerListener(new ContainerAdapter() {
@Override
public void componentAdded(ContainerEvent e) {
if (jProgressBar1 == e.getChild()) {
System.out.println("progressBar!");
new Thread(new Task()).start();
}
}
});
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("Criminal Records");
jLabel1.setFont(new java.awt.Font("Tahoma", 1, 24)); // NOI18N
jLabel1.setText("Criminal Records");
jProgressBar1.setName("");
jProgressBar1.setValue(0);
jProgressBar1.setStringPainted(true);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(204, 204, 204)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 254, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addGap(215, 215, 215)
.addComponent(jProgressBar1, javax.swing.GroupLayout.PREFERRED_SIZE, 176, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap(242, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(312, 312, 312)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 58, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(jProgressBar1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(348, Short.MAX_VALUE))
);
pack();
}
public static void main(String args[]) {
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(ini.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(ini.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(ini.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(ini.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new ini().setVisible(true);
}
});
}
private class Task implements Runnable {
private static final long SLEEP_TIME = 100;
@Override
public void run() {
for (int i = 0; i <= 100; i++) {
final int progress = i;
SwingUtilities.invokeLater(new Runnable() {
public void run() {
jProgressBar1.setValue(progress);
}
});
try {
Thread.sleep(SLEEP_TIME);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
private javax.swing.JLabel jLabel1;
private javax.swing.JProgressBar jProgressBar1;
}
最佳答案
我发现您使用线程存在一个主要问题和一个小问题:
.start()
,而不是 .run()
,因为后者将保证不会创建后台线程.至于您的另一个问题,即使用 ContainerListener 的问题,我等待您对问题的澄清,以及您创建和发布您的 minimal code example program供我们审查、测试并可能修复。
<小时/>编辑
根据您的评论,
I want to show a progress-bar in a frame which show 0-100%. I created the frame and added the progress bar. But it shows only 0% and not moving.
同样,您还有一些线程问题需要修复。您还需要在其中放置一个 Thread.sleep 来减慢 for 循环的速度。否则,即使使用适当的线程,您也不会看到进展。
I want to invoke the function when progressbar is added to the frame.
您正在将 ContainerListener 添加到 JProgressBar,但这不起作用,因为您没有向进度条添加任何内容。相反,您需要将监听器添加到保存进度条的容器中。但即便如此,这可能不是开始这一过程的好方法。但让我看看我能做什么......请稍等。
<小时/>例如,
import java.awt.event.ContainerAdapter;
import java.awt.event.ContainerEvent;
import javax.swing.*;
public class JProgressExample extends JPanel {
private JProgressBar jProgressBar1 = new JProgressBar(0, 100);
public JProgressExample() {
addContainerListener(new ContainerAdapter() {
@Override
public void componentAdded(ContainerEvent e) {
if (jProgressBar1 == e.getChild()) {
System.out.println("progressBar!");
new Thread(new Task()).start();
}
}
});
jProgressBar1.setName("");
jProgressBar1.setValue(0);
jProgressBar1.setStringPainted(true);
add(jProgressBar1);
}
private class Task implements Runnable {
private static final long SLEEP_TIME = 100;
@Override
public void run() {
for (int i = 0; i <= 100; i++) {
final int progress = i;
SwingUtilities.invokeLater(new Runnable() {
public void run() {
jProgressBar1.setValue(progress);
}
});
try {
Thread.sleep(SLEEP_TIME);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
private static void createAndShowGui() {
JProgressExample mainPanel = new JProgressExample();
JFrame frame = new JFrame("JProgressExample");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.getContentPane().add(mainPanel);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}
}
关于java - 为 ProgressBar Java 添加容器监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25822901/
我的应用程序中有一个 ProgressBar 小部件,无论我做什么,它总是显示为粗橙色(2.x 样式)而不是细蓝色(4.x 样式) . 项目构建目标设置为 Google API 4.0.3(API 级
private static ProgressDialog pDialog; pDialog = new ProgressDialog(activity); pDialog.setIndetermin
我试图让 TalkBack 阅读进度条上的进度,但运气不佳。关于如何获取该信息以便 TalkBack 可以说出来的任何想法。 谢谢 公共(public)类 MainActivity 扩展 Activi
进度条总是返回null public void calcola(View view) { final Dialog myDialog = new Dialog(this);
我正在尝试用选取框样式测试进度条,但没有成功 private void Form1_Load(object sender, EventArgs e) { Applica
我使用以下 Ruby 片段下载 a 8.9MB file . require 'open-uri' require 'net/http' require 'uri' def http_download
我为操作栏按钮尝试了两种不同的进度条样式,通过 refreshMenuItem.setActionView(R.layout.actionbar_indeterminate_progress); ac
每当我输入 fragment 时,我都会看到几秒钟的空白,然后 WebView 中的网页就会出现。 ProgressBar 好像没有显示。 这是我的 XML 文件,用于 WebView 和 Progr
我的包依赖于一个名为 progressbar 的包。有一个bug in progressbar 2.3导致Python>3.3安装失败,因此我安装了latest git repo from this
任何默认的 ProgressBar 都有一个 ClipDrawable 级别,例如,一个绿色的 Drawable 在我的设备上填充灰色背景,在其他设备上填充黄色。 我的问题:当进度小于最大值时,是否可
这是随意的原型(prototype)代码,因此我尝试了我认为应该有效的方法,如果没有,则在谷歌上搜索,然后在仔细阅读类似问题后在这里提问。 我的 Shell 中有以下标记看法:
要在执行查询时显示 ProgressBar,我使用以下代码: if not Query1.Prepared then Query1.Prepare; Query1.Open; ProgressBa
我有三个类,例如 View 、逻辑、 Controller 。 class View{ Progressbutton pb; void start animation(){
我正在用 C#/WPF(.Net 框架 4.0)编写一个应用程序。我遇到的一件事是如何在应用程序非常繁忙时更新控件(如果可能)。我想我只是在努力尝试我在网上找到的东西来让它工作(而且在极少数情况下它会
要在执行查询时显示 ProgressBar,我使用以下代码: if not Query1.Prepared then Query1.Prepare; Query1.Open; ProgressBa
已关闭。此问题不符合 Stack Overflow guidelines 。目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 已关闭 3 年前。 奥 git _a
我创建了一个 ping 程序来 ping 5 服务器。如何在进度运行时让进度条运行。当 ping 完成时,进度条将为 100% private void btnGetstatusActionPer
我想在流程完成后在 PrimeFaces 上隐藏一个进度条。我认为没有必要在不工作时显示进度条。 html代码:
我想添加JProgressBar,它将在下载文件的程序中填充。 第三个问题是如何使进度条在 setValue 中添加正确的金额(例如:当它下载最后一个文件时,JPB 将完成)。 请注意,要下载的文件数
给定一个变量 N,反射(reflect)秒数,我想要一个 jQueryUI Progressbar顺利地从空更新到反射(reflect)该时间段内的完成。 换句话说,我想要一个显示进度条的functi
我是一名优秀的程序员,十分优秀!