全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:3787
推到 Plurk!
推到 Facebook!

無法在子視窗顯示webcam影像

答題得分者是:neoart
Randgris
一般會員


發表:20
回覆:30
積分:10
註冊:2007-04-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-04-08 08:39:13 IP:118.169.xxx.xxx 訂閱
題目描述:可以用Frame顯示webcam的影像,但是透過Frame開啟另一個Frame卻沒辦法顯示webcam的影像

小弟 透過網路加上版上資源 修改了一套

由SendBufferedImage.java當作server來取得webcam影像

而ReceiveBufferedImage.java接收由SendBufferedImage.java送過來的影像顯示 可以成功

但是今天寫了一個JFrameTest.java以同樣的方法 由一個Frame中的button開啟ReceiveBufferedImage.java的

Frame卻顯示不出影像 弄了好久 還是試不出來 麻煩好心人幫我看看 謝謝!!!

用 java SendBufferedImage 另一個 java ReceiveBufferedImage 可以成功

但 java SendBufferedImage 另一個 java JFrameTest 失敗...Orz

PS:需有JMF跟羅技webcam
附加檔案:47fabeb184b28_Robot.rar
編輯記錄
Randgris 重新編輯於 2008-04-08 08:51:05, 註解 可以用Frame顯示webcam的影像,但是透過Frame開啟另一個Frame卻沒辦法顯示webcam的影像‧
neoart
版主


發表:22
回覆:582
積分:425
註冊:2003-05-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-04-08 18:21:56 IP:118.168.xxx.xxx 訂閱
手頭上沒有羅技,無法立即給你試
不過你可以把錯誤訊息貼出來嗎?
建議是在例外捕捉時,要把例外堆疊傾印出來
==================================
try {

}catch(Exception exp){
exp.printStackTrace(); // <----這會比較實用

}
============================
或許就知道錯在哪裡了
Randgris
一般會員


發表:20
回覆:30
積分:10
註冊:2007-04-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-04-08 20:01:23 IP:118.169.xxx.xxx 訂閱
感謝版主幫看 我的問題已經由JavaWorld@TWDuncan版主解決了^^
原因是
你這個問題屬於:time consumed task block event-dispatching thread。



你在 event-dispatching thread 裡建構了 ReceiveBufferedImage,而
ReceiveBufferedImage constructor 有個無窮迴圈,這個無窮迴圈執行後所有的 UI
元件都沒有機會處理訊息(包括更新外觀)。



請把 ReceiveBufferedImage constructor 改成:

1
2
3
4
5
6
7
public ReceiveBufferedImage(String host) {
       addWindowListener(new WindowListener());
     setTitle("ReceiveBufferedImage");
        server = host;
        setSize(160, 120);
     setVisible(true);
   }


而 ReceiveBufferedImage - run method 改成 public。



JFrameTest constructor 改成:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
  public JFrameTest() {
      jb = new JButton();
      jb.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent actionEvent) {
            final ReceiveBufferedImage receiveBufferedImage = new ReceiveBufferedImage("127.0.0.1");
            new Thread(new Runnable(){
              public void run() {
                receiveBufferedImage.run();
              }
            }).start();
          }
        }
      );
      jb.setSize(50, 50);
    setSize(500, 500);
    add(jb);
    setLayout(null);
    setVisible(true);
  }

===================引 用 neoart 文 章===================
手頭上沒有羅技,無法立即給你試
不過你可以把錯誤訊息貼出來嗎?
建議是在例外捕捉時,要把例外堆疊傾印出來
==================================
try {

}catch(Exception exp){
exp.printStackTrace(); // <----這會比較實用

}
============================
或許就知道錯在哪裡了
系統時間:2024-11-23 17:26:41
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!