2009-03-13 12 views
0

JScrollPane内にコンポーネント(JPanelの派生物)を配置しています。JScrollPaneのコンポーネントがKeyEventsの受信を停止します

scrollPane = new JScrollPane(component); 

コンポーネントは時折サイズを変更するので、私はたまにやっています

SwingUtilities.invokeLater(new Runnable(){ 

      public void run() 
      { 
      scrollPane.getViewport().setView(component); 
      component.repaint(); 
      } 
    }); 

をまた、コンポーネントたKeyEvents

component.addKeyListener(this); 
    SwingUtilities.invokeLater(new Runnable() 
    { 
     public void run() 
     { 
      component.setFocusable(true); 
      component.requestFocusInWindow();  
     } 
    }); 

を受け取ることができますが、コンポーネントは任意のキーイベントを受け取ることはありません。 keyTyped()のコードでさえ実行されません(私はSystem.out.println()を入れました)。 デバッグモードでは、AWTイベントスレッドがキーイベントを受け入れるときにメインスレッドを一時停止できます。しかし、通常の実行中は動作しません。

誰でも私が間違っていることを示唆することはできますか?

+0

ビューを再度設定する必要がある理由を詳しく説明できますか?コンポーネントがサイズの変更を正しく処理していませんか? java.swing.Scrollableの実装を検討しましたか? – ordnungswidrig

+0

コンポーネントがサイズを正しく変更する方法を教えてください。似たような...何をしているの? –

+0

scrollPane.getViewport()を置き換える。setView(コンポーネント); component.revalidate()はScrollableと一緒に私の問題を解決しました。ありがとう! –

答えて

0

私のコンポーネントをjava.swing.Scrollableにして、scrollPane.getViewport().setView(component);component.revalidateに置き換えて私のprioblemを解決しました。

ありがとうございますordnungswidrig!

関連する問題