2011-01-14 9 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 %) 진행률 막대를 볼 수 있으며 buttonclick까지는 진행률 표시 줄을 표시하고 싶지 않습니다.jprogressbar가 보이고 버튼 클릭시 작동

+0

여기에 질문이 있습니까? – jerluc

+0

Actaully 나는 버튼 클릭 후 바로 progressbar를보고 싶다.하지만 이제는 처리를 완료하는 progressbar를 얻는다. – 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

자바 명명 규칙을 배우고 고수해라. – kleopatra

+0

플러스 거기에 몇 가지 다른 건 잘못되었습니다 : a) EDT를 자지 마세요 b) 수동으로 크기를 조정하거나 구성 요소를 찾지 마십시오. 적절한 LayoutManager의 독점적 인 작업입니다. c) paintImmediately는 거의 없습니다. 예외 없음) 필요한 – kleopatra

관련 문제