2011-01-14 17 views
1
public NewJDialog(java.awt.Frame parent, boolean modal) { 
    super(parent, modal); 
    initComponents(); 
    jProgressBar1.setVisible(false); 

} 

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {          
    jButton1.setEnabled(false); 
    jProgressBar1.setVisible(true);   
    repaint();    
    for(int i=0;i<=100;i+=5){ 
      jProgressBar1.setValue(i); 
     // jProgressBar1.setIndeterminate(false);    
      try{ 
       jProgressBar1.paintImmediately(0, 0, 100, 100);//0, 1, 100, 10 
      Thread.sleep(100); 
      jProgressBar1.setStringPainted(true); 

    }catch(Exception e){} 
    } 

Ich verwende obigen Code für die Verwendung einer Jprogressbar in einem JDialog. Wenn ich das benutze, kann ich eine Fortschrittsbalken sehen, nachdem ich den Prozess abgeschlossen habe (100%) und ich möchte auch nicht den Fortschrittsbalken bis zum Button anzeigen.jprogressbar sichtbar und auf Knopfdruck klicken

+0

Gibt es hier eine Frage? – jerluc

+0

Actully Ich möchte eine Fortschrittsbalken sofort nach dem Klick auf die Schaltfläche sehen. Aber jetzt bekomme ich einen Fortschrittsbalken, der seine Verarbeitung beendet – Jisson

Antwort

1
  1. Verwenden Sie einen separaten Thread zum Ausführen Ihrer Aufgabe. Der Fortschrittsbalken hat keine Chance, auf dem GUI-Thread angezeigt zu werden. Sie brauchen etwas wie SwingWorker, um Ihnen zu helfen.
  2. Fügen Sie den Fortschrittsbalken der GUI nach dem Klicken der Schaltfläche hinzu.
  3. Einen kurzen Überblick über die Einrichtung finden Sie unter Java tutorial.
0
//Simplest way of using JProgressBar 

import java.awt.*; 
import javax.swing.*; 
import java.awt.event.*; 
import java.sql.*; 
import java.util.*; 
class logindemo extends JFrame implements ActionListener 
    { 
     JProgressBar pb; 
     JButton b1; 
      logindemo() 
      { 
      super("LOGIN FORM"); 
      setLayout(null); 
      b1=new JButton("LOGIN"); 
      b1.setBackground(Color.yellow);    
      pb=new JProgressBar(1,100); 
      pb.setValue(0); 
      pb.setStringPainted(true); 
      pb.setForeground(Color.red); 
      pb.setBackground(Color.white); 
      b1.setBounds(20,20,80,25);pb.setBounds(110,20,200,25); 
      pb.setVisible(false); 
      add(b1); 
      add(pb);    
      b1.addActionListener(this); 
      setResizable(false); 
      setDefaultCloseOperation(EXIT_ON_CLOSE); 
      } 
      public void actionPerformed(ActionEvent e) 
      { 
       int i=0; 
       if(e.getSource()==b1) 
       { 
        pb.setVisible(true); 
       try 
       { 
        while(i<=100) 
        { 
        Thread.sleep(50); 
    pb.paintImmediately(0, 0, 200, 25); 
     pb.setValue(i); 
        i++; 
    } 
       } 
       catch(Exception e1) 
       { 
    System.out.print("Caughted exception is ="+e1); 
       } 
       } 
      } 
      public static void main(String arg[]) 
      { 
      logindemo m=new logindemo(); 
      m.setSize(330,100); 
      m.setVisible(true); 
      Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize(); 
      int x = (int) ((dimension.getWidth() - m.getWidth())/2); 
      int y = (int) ((dimension.getHeight() - m.getHeight())/2); 
      m.setLocation(x, y); 
      } 
    } 

/* 
By 
Dr. Amit Kumar Kapoor 
Assistant Professor, Maharaja Agrasen Institute of Management & Technology, Jagadhri 
E-mail ID: - [email protected] 
*/ 
+0

Bitte lernen Java Namenskonventionen und bleiben Sie dabei. – kleopatra

+0

plus da sind noch ein paar andere dinge falsch: a) schlaf nicht den EDT, b) mache keine manuelle leimung/lokalisierung von komponenten, das ist die exklusive aufgabe eines geeigneten LayoutManagers c) paintObmediate ist selten (this ist keine der Ausnahmen) benötigt – kleopatra