2011-01-14 12 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){} 
    } 

私は上記のコードをJDialogでJprogressbarを使用するために使用します。これを使用すると、プロセスを完了した後にプログレスバーが表示されます(100%)。また、ボタンクリックまでプログレスバーを表示したくありません。jprogressbarが表示され、ボタンをクリックして作業中

+0

ここに質問がありますか? – jerluc

+0

Actaully私はボタンクリック直後にプログレスバーを見たいですが、今度は処理を完了するプログレスバーが表示されます – Jisson

答えて

1
  1. タスクを実行するために別のスレッドを使用します。プログレスバーはGUIスレッドに描画される機会はありません。あなたにはSwingWorkerのようなものが必要です。
  2. ボタンをクリックした後、GUIにプログレスバーを追加します。
  3. セットアップの方法については、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

Java命名規則を学び、それらに固執してください。 – kleopatra

+0

これに加えて、いくつかの間違った点があります:a)EDTをスリープ状態にしないでください。b)コンポーネントのマニュアルサイジング/ロケートを行わないでください。これは適切なLayoutManagerの排他的なタスクです。c)paintImmediatelyはまれです。例外ではない)必要 – kleopatra

関連する問題