我有一个GUI问题,我想整理出来,但我对发生的事情感到困惑,希望你们中的一个人能解释一下.代码库太大而无法上传,但我会详细解释发生了什么:
我有一个类ProgessBar是一个JDialog包含摆动JProgressBar.我有一些吸气剂和制定者可以根据自己的喜好改变标准,但问题就出现了.
ProgressBar是在方法中生成的 myButtonActionPerformed
myButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
myButtonActionPerformed(evt);
}
});
Run Code Online (Sandbox Code Playgroud)
基本上当用户点击此按钮时,处理开始并ProgressBar产生.
用户当前有一个JFrame在他们面前,这个进度条弹出一个JDialog.在Netbeans中逐步调试模式之后,我可以看到它JProgressBar的值发生了变化,但是当我的程序处理时,条形图在视觉上保持0%,然后在它离开上面的添加动作侦听器方法时立即跳转到100%,几乎为如果它等待重画,直到听众.我不明白的是什么?有什么我可以调用它会强制它在这个myButtonActionPerformed方法内更新,而不是等到它没用.
我有一个简单的Swing Java应用程序执行搜索,结果显示在一个新选项卡中.搜索正在运行时,我想在选项卡的标题中显示进度图标或动画.我尝试添加一个gif图标,但它没有动画.有没有理由不这样做?
您好我想知道我是否可以扩展a JProgressBar使用最小值的double值,而不是int.谢谢.
你如何创建一个Modal JDialog说"加载",而任务正在处理,超过3秒后显示?
我有以下问题:
我有一个JTable,它向我展示了一个命令的进度.我有两种命令.确定和不确定的命令.
如果我在表中只有未确定的进度条,则表明进度正确.但是,如果我有一个确定的进度条,其他未确定的动画将不会生动.
这是我的代码:
class ProgressBarRenderer implements TableCellRenderer {
/** The bar. */
private JProgressBar bar = new JProgressBar() {
public boolean isDisplayable() {
return true;
};
};
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
ProgressBarInfo pbi = (ProgressBarInfo) value;
if (pbi.getType() == Progress.LS) {
if (pbi.getValue() == -1) {
bar.setIndeterminate(false);
bar.setValue(0);
bar.setString("Progress ended");
} else {
bar.setIndeterminate(true);
bar.setString(pbi.getValue() + " " + pbi.getText());
}
bar.setStringPainted(true);
return bar;
} else if …Run Code Online (Sandbox Code Playgroud) 问题已解决!!!!!! 非常感谢trashgod和HoverCraftFullOfEels!我终于通过使用下面的例子并略微改变它来获得这个概念.更改允许缩放进度条(默认为100个单位).再次感谢您的耐心和愿意为此而努力.意味着很多人,~Kyte
ps - + 1全部'围绕:)
/** @see http://stackoverflow.com/questions/4637215 */
public class Threading_01 extends JFrame {
private static final String s = "0.00";
private JProgressBar progressBar = new JProgressBar(0, 100);
private JLabel label = new JLabel(s, JLabel.CENTER);
public Threading_01() {
this.setLayout(new GridLayout(0, 1));
this.setTitle("?2");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.add(progressBar);
this.add(label);
this.setSize(161, 100);
this.setLocationRelativeTo(null);
this.setVisible(true);
}
public void runCalc() {
// progressBar.setIndeterminate(true);
TwoWorker task = new TwoWorker();
task.addPropertyChangeListener(new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent e) {
if ("progress".equals(e.getPropertyName())) {
progressBar.setIndeterminate(false);
progressBar.setValue((Integer) e.getNewValue());
System.out.println("**: " …Run Code Online (Sandbox Code Playgroud) 我正在尝试将JProgressBar添加到我的程序中,但它不会更新!只有在100%的原因后,该值才会更改.这是我的方法.
public void downloadImages(List<String> images) {
if (errorCode == 0) {
for (int i = 0; i < images.size(); i++) {
if (errorCode == 0) {
main.progressLabel.setText("Downloading image " + Integer.toString(i + 1) + " of " + Integer.toString(images.size()));
String imageStr = images.get(i);
String imageName = imageStr.substring(imageStr.lastIndexOf("/") + 1);
try {
URL url = new URL(imageStr);
InputStream in = url.openStream();
OutputStream out = new FileOutputStream(saveDirectory + imageName);
byte[] b = new byte[2048];
int length;
while ((length = in.read(b)) != -1) …Run Code Online (Sandbox Code Playgroud) 我正在使用JProgressBar来显示进度.但是,如何将progressBar显示为从0加载到100?我从互联网及其工作中获得了代码,但progressBar没有加载.
码
progressFrame = new JFrame(); // frame to display progress bar
progressBar = new JProgressBar(0,100);
progressBar.setValue(0);
progressBar.setStringPainted(true);
progressFrame.add(progressBar);
new SwingWorker<Void,Void>()
{
protected Void doInBackground() throws SQLException, ClassNotFoundException
{
Class.forName("oracle.jdbc.driver.OracleDriver");
progressBar.setValue(0);
frame.setEnabled(false); // frame = main frame
//tableclass creates a JTable with data from database
tableclass = new TheDatabaseTable(deptName);//it takes time to create
progressBar.setValue(50);
frame.getContentPane().removeAll();
frame.setContentPane(tableclass);
frame.validate();
frame.repaint();
progressBar.setValue(100);
//progressFrame.dispose();
return null;
};
protected void done()
{
//progressFrame.setVisible(false);
frame.setVisible(true);
progressFrame.dispose();
frame.setEnabled(true);
}
}.execute();
Run Code Online (Sandbox Code Playgroud)
如果有人编辑上述代码,我将不胜感激.谢谢.
问题:
ClassA
static JProgressBar progressBar;
ClassB
ClassA.progressBar.setValue(0);
...
ClassA.progressBar.setValue(10);
...
ClassA.progressBar.setValue(20);
Run Code Online (Sandbox Code Playgroud)
进度条显示0,然后在0的顶部显示10,然后在10的顶部显示20.
码:
public class ClassA
{
static JProgressBar progressBar;
public ClassA()
{
...
progressBar = new JProgressBar(0, 100);
progressBar.setStringPainted(true);
...
}
public static void main(String[] args)
{
ClassA cA = new ClassA();
cA.something();
}
public void something()
{
...
panel.add(progressBar, BorderLayout.CENTER);
...
}
...
}
public class ClassB
{
public void something()
{
...
ClassA.progressBar.setValue(0);
ClassA.progressBar.update(ClassA.progressBar.getGraphics());
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
我还在面板中添加了进度条.如上所述,它显示进度条和百分比,但它显示每个值在另一个之上.
编辑: 问题非常类似于:Java Swing revalidate()vs repaint().但是,而不是
旧内容仍然可见(虽然被新内容遮盖) …
我是Java的新手,但需要知道,如果开发人员可以这样做,他/她可以改变它的形状JProgressBar.我的意思是假设在我的情况下我想改变形状,使它看起来像一个圆圈或其他东西?
虽然我只是想将它从条形更改为弧形,或者你可以说我想将条形更改为任何其他形状.我的进度条可能看起来像条形以外的曲线.我想在其中添加一条曲线.
java ×10
jprogressbar ×10
swing ×10
concurrency ×2
jtable ×2
jdialog ×1
jtabbedpane ×1
shape ×1
swingworker ×1