JScrollPane에 포커스를주는 데 문제가 있습니다. 내가 작업중인 키 바인딩을 시도 할 수 있도록 창을 만들 때이 작업을 수행하려고합니다. 모든 것이 그것이 있어야하고 올바른 크기로 나타납니다. 내가있어하는 것은 다음과 같습니다JScrollPane를 포커스 할 수 없습니까?
import java.awt.*;
import java.swing.*;
public class MyInterface extends JFrame {
public MyInterface() {}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
private static void createAndShowGUI() {
// define custom table model
JTable table = new JTable(model);
MyScrollPane scrollPane = new MyScrollPane(table);
MyInterface frame = new MyInterface();
scrollPane.setPreferredSize(new Dimension(512, 512));
frame.getContentPane().add(scrollPane);
frame.pack();
frame.setVisible();
scrollPane.requestFocus();
}
}
public class MyScrollPane extends JScrollPane implements KeyListener {
public MyScrollPane(Component view) {
super(view, ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
}
// key event processing
}
나는 윈도우가 완성 개방 후 스크롤에 대한 초점을 요청합니다 프레임에 윈도우 청취자를 추가했지만, 그것은 도움이되지 않았다. 어떤 아이디어?
편집 : 생각은 내가 언급해야하는 scrollPane.isFocusable()와 scrollPane.isRequestFocusEnabled 모두 true를 반환, 그래서 나는 포커스를 줄 수 있어야합니다.
편집 : 에 초점을 맞출 수없는 것 같습니다. (프레임, 테이블 등)이므로 다른 문제가 있습니다. 아무리 노력해도 null이 표시됩니다.
Component compFocusOwner = KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner();
System.out.println("focus owner: " + compFocusOwner);
왜 코드가'JScrollPane'을 확장합니까? 클래스를 확장하는 것을 피하는 것이 일반적으로 선호되며,이 예에서 볼 수있는 것은 클래스를 확장하는 것을 정당화하지 않습니다. BTW - 좀 더 빨리 도움을 받으려면 [SSCCE] (http://pscode.org/sscce.html)를 게시하십시오. –