现在,我的主要是用10行调用一个gui.根据这些行中有多少行有文本,调用9个类中的1个(两行必须有文本).被调用的类执行计算,我希望将进度条绑定到.以下是其中一个被调用类的示例(每个类都相似,但足够不同以保证新类.)我认为问题违反了EDT规则,但我在其上看到的所有示例都涉及到论点.运行代码时会出现框架,但在完成所有计算之前,进度条不会更新.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class twoLoan extends JFrame {
static JFrame progressFrame;
static JProgressBar progressBar;
static Container pane;
double amountSaved = 0;
int i = 0;
public void runCalcs(Double MP, Double StepAmt,
Double L1, Double L2, Double C1, Double C2,
Double IM1, Double IM2, Double M1Start, Double M2Start) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
}
int iterations = (int) (MP - (M1Start * M2Start));
//Create all components
progressFrame = new JFrame("Calculation Progress");
progressFrame.setSize(300, …Run Code Online (Sandbox Code Playgroud) 我正在使用jprogressbar来指示可用性状态. 我想在进度条中显示40%[假设]的文本.怎么做?文本根据可用性值进行了更改
我用过.setBackground而且.setForeground它们不起作用,颜色就像橙色,无法改变它.
我需要一些关于JProgressBar组件的帮助.我的程序副本从一个地方到另一个文件使用java.nio FileChannels.实际的复制方法是transferFrom().
我现在有两个问题.
如何监控FileChannel的传输进度?我发现的所有教程都使用传统的java.io InputStreams,并在循环输入流时增加进度int.
我的复制方法(FileChannel方法)封装在一个单独的方法中,该方法由其他方法调用,这些方法迭代源文件夹和目标文件夹,然后为每个文件调用FileChannel方法.
如何为完整的复制机制实现ProgressBar?
好吧,我应该早一点阅读常见问题解答,所以我想我必须编辑我的初始帖子,而不是评论答案,对吧?
好的,这是我到目前为止所做的.正如jambjo建议的那样(感谢方式),该transferFrom()方法现在已经循环.顺便说一句:是否有一个更好的块大小,或者它取决于我的进度条的粒度,就像EJP所说的那样?
这是我的代码片段:
while (position < size) {
position += destination.transferFrom(source, position, chunkSize);
current = (position/size)*100;
System.out.println(current);
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,'当前'值在循环内保持为0,我不知道为什么.我错过了什么吗?
再次感谢jambjo!我真的很感激你的意见!现在单个文件的进度监控工作,让我们解决我的第二个问题.
我不想,我不仅要监控一个文件的进度,而是监视一堆文件的进度.我的主要复制方法遍历各种目录并通过调用实际的传输方法复制适当的文件.因此复制方法不传输文件,它们只是选择实际传输方法的文件.
我正在尝试获得一个进度条以准确反映我的SwingWorker.但我真的无法弄清楚该怎么做.我得到了一个静态动画,直到操作完成,但我想要一个真正的活动栏.
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package frglauncher;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.RandomAccessFile;
import java.net.MalformedURLException;
import java.net.URL;
import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel;
import java.util.Enumeration;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JLabel;
import javax.swing.JProgressBar;
import javax.swing.SwingWorker;
/**
*
* @author KYLE-LAPTOP
*/
class DownloadWorker extends SwingWorker<String, Object> {
private String game;
private JProgressBar bar;
private JLabel label;
public …Run Code Online (Sandbox Code Playgroud) 我确定之前已经问过这个问题,但我找到的答案都不能与我现有的代码很好地配合.我发布这个问题,以防有一种方法可以做到这一点,而不是完全重做我到目前为止.
这个想法是在将文件和目录从一个驱动器复制到另一个驱动器时显示一个非常基本的进度条.我有一个名为BasicCopy的类,用于将图片,文档,视频和音乐文件夹(Windows机器上的标准)的内容复制到第二个驱动器上备份目录中相同名称的文件夹.到目前为止这是班级:
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.commons.io.FileUtils;
public class BasicCopy {
String username = "";
String mainDrive = "";
String backupDrive = "";
String backupDir = "";
String[] directories;
public BasicCopy(String inDrive, String outDrive, String username){
mainDrive = inDrive;
backupDrive = outDrive;
this.username = username;
createBackupDirectory();
copyDirectories();
close();
}
//Create backup directory
public void createBackupDirectory(){
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yyyy_HMMSS");
String timestamp = sdf.format(date);
backupDir = backupDrive + ":\\" + …Run Code Online (Sandbox Code Playgroud) 当您单击加密时,应用程序会加密放入表中的每个文件,并且我希望显示文件在加密时的进度.然后,"状态"列将从"未处理"更改为"已处理".
与您在电子邮件中查看多个文件附件的方式类似.我一直在研究单元格渲染器和ProgressBarTablecell,但我不确定如何实现它们.任何帮助赞赏.我正在张贴桌子.
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Point;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.dnd.DnDConstants;
import java.awt.dnd.DropTarget;
import java.awt.dnd.DropTargetDragEvent;
import java.awt.dnd.DropTargetDropEvent;
import java.io.File;
import java.io.IOException;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.table.DefaultTableModel;
public class DropTable {
public static void main(String[] args) {
new DropTable();
}
public DropTable() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager
.getSystemLookAndFeelClassName());//get look and feel of whatever OS …Run Code Online (Sandbox Code Playgroud) 对于长时间运行的进程,我想要一个很好的进度条.JProgressBar有没有替代品,特别是对于不确定的流程?
我在考虑看起来像Web-2.0的旋转轮,旋转轮,你有什么.
虚构的奖励积分,免费,LGPL许可的东西.;)
如果我真的想做类似的事情,我可以在JTabbedPane选项卡中放置一个JProgressBar(或它的等价物)吗?(我的意思是,不在标签本身,
我该怎么办呢?
编辑 我真的想把进度条放在标签的标题中,而不是标签本身.
这是一些ascii艺术:
----------------------------------------------------
| Tab 1 || Tab 2||Tab-with-progress-bar||Tab 4|
----------- --------------------------------
' '
' '
' '
' '
' '
' '
' '
' '
----------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
因此,它实际上是"选项卡2",目前可见,但我希望在第三个选项卡的标题中显示进度条(或等效项).
编辑2
这必须适用于Java 1.5:这必须适用于无数MacOS 10.4和MacOS 10.5 Apple计算机,这些计算机永远不会配备Java 6(有些人会这样做,有些人不会这样做:而且很多人都不会这样做,这不是我的呼叫)
我想知道你是否有人知道如何在Java中显示一个漂亮的进度条,主要是使用Swing,虽然我不介意使用第三方库.
我一直在看JProgressBar教程,但没有一个是指造型吧.阅读API我找到了一个返回ProgressBarUI对象的getUI方法,但是我没有看到很多方法来自定义那个.
我想要的是添加圆角,改变背景和前景色,宽度,长度,通常.
谢谢!
java ×10
jprogressbar ×10
swing ×9
file ×2
swingworker ×2
colors ×1
copy ×1
desktop ×1
file-io ×1
jtabbedpane ×1
jtable ×1
jtextfield ×1
nio ×1