xsd
2006-09-25 05:04:49 UTC
我想問有關於JProgressBar的相關問題
// 以下是測試檔
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
public class progress_test implements ActionListener{
private JFrame frame = new JFrame("視窗"); // 按扭主視窗
private JFrame f = new JFrame("進度"); // JProgressBar視窗
private JButton btn = new JButton("按扭");
private JProgressBar progressbar = new JProgressBar();
public progress_test() {
frame.setBounds(200,200,200,200);
frame.getContentPane().add(btn);
progressbar.setOrientation(JProgressBar.HORIZONTAL);
progressbar.setMinimum(0);
progressbar.setMaximum(100);
progressbar.setValue(0);
progressbar.setStringPainted(true);
progressbar.setPreferredSize(new Dimension(200,30));
progressbar.setBorderPainted(false);
btn.addActionListener(this);
frame.setVisible(true);
}
public void actionPerformed(ActionEvent ae) {
if(ae.getSource()==btn) {
[1;36m[1;34mnew Thread(new Runnable() {
public void run()
{
f.getContentPane().add(progressbar);
f.setBounds(100,100,100,100);
f.setVisible(true);
progressbar.setVisible(true);
for (int i=0;i<=100;i++)
progressbar.setValue(i);
}
}).start();[m
[1;33m// 此處進行資料庫的處理[m
[1;32mframe.dispose();[m
}
}
public static void main(String[] args) {
new progress_test();
}
}
程式的執行是這樣子的 執行後 出現一個視窗 視窗上面有一個按扭
當按下後 則會進行資料庫的相關處理 如黃色註解那邊所示
而在進行資料庫的處理之前 先啟動了一個thread來做JProgressBar的運作
但是執行後 JProgressBar不會先出來 反倒是按住frame的button畫面會先定住
然後視窗f會出現 但是JProgressBar不會出現 然後待那些資料庫的處理完畢後
frame.dispose()之後,JProgressBar才出現。
我想問的就是 為什麼這個時候JProgressBar才出現呢?
有人遇過相關的問題嗎?
這個方法我是參考JavaWorld的方法,但是還是無法解決
網址:
http://www.javaworld.com.tw/jute/post/view?bid=5&id=69415&sty=3&age=0&tpg=1&ppg=1#69415
若我問的不好 請見諒
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.174.244.121
// 以下是測試檔
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
public class progress_test implements ActionListener{
private JFrame frame = new JFrame("視窗"); // 按扭主視窗
private JFrame f = new JFrame("進度"); // JProgressBar視窗
private JButton btn = new JButton("按扭");
private JProgressBar progressbar = new JProgressBar();
public progress_test() {
frame.setBounds(200,200,200,200);
frame.getContentPane().add(btn);
progressbar.setOrientation(JProgressBar.HORIZONTAL);
progressbar.setMinimum(0);
progressbar.setMaximum(100);
progressbar.setValue(0);
progressbar.setStringPainted(true);
progressbar.setPreferredSize(new Dimension(200,30));
progressbar.setBorderPainted(false);
btn.addActionListener(this);
frame.setVisible(true);
}
public void actionPerformed(ActionEvent ae) {
if(ae.getSource()==btn) {
[1;36m[1;34mnew Thread(new Runnable() {
public void run()
{
f.getContentPane().add(progressbar);
f.setBounds(100,100,100,100);
f.setVisible(true);
progressbar.setVisible(true);
for (int i=0;i<=100;i++)
progressbar.setValue(i);
}
}).start();[m
[1;33m// 此處進行資料庫的處理[m
[1;32mframe.dispose();[m
}
}
public static void main(String[] args) {
new progress_test();
}
}
程式的執行是這樣子的 執行後 出現一個視窗 視窗上面有一個按扭
當按下後 則會進行資料庫的相關處理 如黃色註解那邊所示
而在進行資料庫的處理之前 先啟動了一個thread來做JProgressBar的運作
但是執行後 JProgressBar不會先出來 反倒是按住frame的button畫面會先定住
然後視窗f會出現 但是JProgressBar不會出現 然後待那些資料庫的處理完畢後
frame.dispose()之後,JProgressBar才出現。
我想問的就是 為什麼這個時候JProgressBar才出現呢?
有人遇過相關的問題嗎?
這個方法我是參考JavaWorld的方法,但是還是無法解決
網址:
http://www.javaworld.com.tw/jute/post/view?bid=5&id=69415&sty=3&age=0&tpg=1&ppg=1#69415
若我問的不好 請見諒
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.174.244.121