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イベントスレッドがキーイベントを受け入れるときにメインスレッドを一時停止できます。しかし、通常の実行中は動作しません。
誰でも私が間違っていることを示唆することはできますか?
ビューを再度設定する必要がある理由を詳しく説明できますか?コンポーネントがサイズの変更を正しく処理していませんか? java.swing.Scrollableの実装を検討しましたか? – ordnungswidrig
コンポーネントがサイズを正しく変更する方法を教えてください。似たような...何をしているの? –
scrollPane.getViewport()を置き換える。setView(コンポーネント); component.revalidate()はScrollableと一緒に私の問題を解決しました。ありがとう! –