JScrollPane 내부에 구성 요소 (JPanel의 파생 요소)를 추가하고 있습니다. 구성 요소가 때때로 크기를 변경하기 때문에JScrollPane의 구성 요소가 KeyEvents 수신을 중지합니다.
scrollPane = new JScrollPane(component);
, 나는이 가끔해야 할 일 :
SwingUtilities.invokeLater(new Runnable(){
public void run()
{
scrollPane.getViewport().setView(component);
component.repaint();
}
});
또한, 구성 요소가 KeyEvent를
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 (구성 요소); scrollable과 함께 component.revalidate()를 사용하여 내 문제를 해결했습니다. 감사! –