2013-08-05 1 views
0

저는 그래프 DB의 구현 진행 상황을 실시간으로 보여줄 프레임을 개발했습니다. 목적을 위해 다음 프레임과 그 구성 요소를 개발했습니다. 문제는 db가 완료된 후에 표시된다는 것입니다. 아래쪽에있는 코드를 둘러싸는 JProgressBar를 구현하려면 어떻게해야합니까 ??JProgressBar 구현

버튼은 다음

  EventQueue.invokeLater(new Runnable() { 
     public void run() { 
      try { 

      Interface frame = new Interface(); 
      frame.setVisible(true); 

      } catch (Exception e) { 
      e.printStackTrace(); 
      } 

// 버튼 코드

btnNewButton_1.addActionListener(new ActionListener(){ 
    public void actionPerformed(ActionEvent arg0) { 


    // I have created this frame to show the progress of the DB creation 
    JFrame converterFrame = new JFrame(); 
    converterFrame.setVisible(true); 
    converterFrame.setBounds(100, 100, 650, 288); 
    JPanel contentPane = new JPanel(); 
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 
    converterFrame.setContentPane(contentPane); 
    contentPane.setLayout(null); 
    contentPane.setVisible(true); 

    JPanel panelNeo1 = new JPanel(); 
    panelNeo1.setBackground(SystemColor.text); 
    panelNeo1.setBounds(6, 6, 638, 254); 
    panelNeo1.setVisible(true); 
    contentPane.add(panelNeo1); 
    panelNeo1.setLayout(null); 

    JLabel labelNeo1 = new JLabel("CSV BORO Converter"); 
    labelNeo1.setForeground(Color.DARK_GRAY); 
    labelNeo1.setBounds(16, 19, 260, 37); 
    panelNeo1.add(labelNeo1); 
    labelNeo1.setIcon(new ImageIcon(Interface.class.getResource("/javax/swing/plaf/metal/icons/ocean/hardDrive.gif"))); 
    labelNeo1.setFont(new Font("Lucida Grande", Font.BOLD | Font.ITALIC, 20)); 
    labelNeo1.setBackground(Color.WHITE); 
    labelNeo1.setOpaque(true); 
    labelNeo1.setVisible(true); 

    JPanel panelNeo2 = new JPanel(); 
    panelNeo2.setBounds(16, 60, 605, 167); 
    panelNeo1.add(panelNeo2); 
    panelNeo2.setBackground(SystemColor.textHighlight); 
    panelNeo2.setLayout(null); 
    panelNeo2.setVisible(true); 

    JProgressBar progressBar = new JProgressBar(); 
    progressBar.setBounds(27, 89, 547, 20); 
    panelNeo2.add(progressBar); 
    panelNeo2.setVisible(true); 

    JLabel labelNeo2 = new JLabel(" Processing: Number of row"); 
    labelNeo2.setBackground(Color.WHITE); 
    labelNeo2.setOpaque(true); 
    labelNeo2.setBounds(28, 36, 184, 20); 
    panelNeo2.add(labelNeo2); 
    labelNeo2.setVisible(true); 

    JLabel labelNeo3 = new JLabel(""); 
    labelNeo3.setBackground(Color.WHITE); 
    labelNeo3.setBounds(212, 36, 76, 20); 
    labelNeo3.setOpaque(true); 
    panelNeo2.add(labelNeo3); 
    labelNeo3.setVisible(true); 

    JLabel labelNeo4 = new JLabel(); 
    labelNeo4.setText(String.valueOf(200000)); 
    labelNeo4.setBackground(Color.WHITE); 
    labelNeo4.setBounds(311, 36, 70, 20); 
    labelNeo4.setOpaque(true); 
    panelNeo2.add(labelNeo4); 
    labelNeo4.setVisible(true); 

    JLabel labelNeo6 = new JLabel("of"); 
    labelNeo6.setOpaque(true); 
    labelNeo6.setBackground(Color.WHITE); 
    labelNeo6.setBounds(288, 36, 23, 20); 
    panelNeo2.add(labelNeo6); 
    labelNeo6.setVisible(true); 


    // I want to put a JProgressBar that surround the following function 

      createDB(); 

        // In addition I would like to set in my frame a value 
        // coming from my function and set it in labelNeo3.setText(value) 

    //End of Code progress bar   

    } 
}); 
+1

빨리 [SSCCE] (http://sscce.org/), 짧고, 실행 가능한, 컴파일 가능한, 잘라 내기, 쓸모없는 JComponents를 제거하고 JProgressBar로 의도에 대한 명확한 설명 – mKorbel

답변

0

CREATEDB를 실행하는 새 스레드를 생성하는 것이 좋습니다를 사용하여 메인에서 호출 할당되는 프레임() 방법 - GUI가 멈추지 않도록합니다. 해당 메소드의 진행 상황을 모니터하려면 progressBar.setValue (int)를 (직접 또는 간접적으로) 호출해야합니다. 자세한 내용은이 자습서를 참조하십시오. 유용한 정보를 얻으려면 http://docs.oracle.com/javase/tutorial/uiswing/components/progress.html