Ich stelle ich einem Fenster (eigenen) HTML-Code dar. Der Anzeigebereich (eine JEditorPane
falls das wichtig ist) liegt in einer JScrollPane
(im Code unten scroll
genannt).
Das ganze befindet sich in einem JFrame
(von den ich ausnahmsweise tatsächlich abgeleitte habe, um createRootPane
zu überschreiben):
* Diese Methode aus JFrame wird überschrieben, um den Tastendrücke
* abfangen und behandeln zu können.
*/
@Override
protected JRootPane createRootPane() {
Action escapeActionListener = new AbstractAction() {
private static final long serialVersionUID = 1L;
@Override
public void actionPerformed(ActionEvent actionEvent) {
dispose();
}
};
Action homeActionListener = new AbstractAction() {
private static final long serialVersionUID = 1L;
@Override
public void actionPerformed(ActionEvent actionEvent) {
int minimum = scroll.getVerticalScrollBar().getMinimum();
scroll.getVerticalScrollBar().setValue(minimum);
}
};
Action endActionListener = new AbstractAction() {
private static final long serialVersionUID = 1L;
@Override
public void actionPerformed(ActionEvent actionEvent) {
int maximum = scroll.getVerticalScrollBar().getMaximum();
scroll.getVerticalScrollBar().setValue(maximum);
}
};
Action pageUpActionListener = new AbstractAction() {
private static final long serialVersionUID = 1L;
@Override
public void actionPerformed(ActionEvent actionEvent) {
//JViewport viewPort = scroll.getViewport();
//viewPort.
System.out.println("Page up");
}
};
Action pageDownActionListener = new AbstractAction() {
private static final long serialVersionUID = 1L;
@Override
public void actionPerformed(ActionEvent actionEvent) {
//JViewport viewPort = scroll.getViewport();
//viewPort.
System.out.println("Page down");
}
};
JRootPane rootPane = new JRootPane();
InputMap inputMap = rootPane.getInputMap(
JComponent.WHEN_IN_FOCUSED_WINDOW);
KeyStroke homeStroke = KeyStroke.getKeyStroke(KeyEvent.VK_HOME, 0);
inputMap.put(homeStroke, "HOME");
KeyStroke endStroke = KeyStroke.getKeyStroke(KeyEvent.VK_END, 0);
inputMap.put(endStroke, "END");
KeyStroke pageUpStroke = KeyStroke.getKeyStroke(KeyEvent.VK_PAGE_UP, 0);
inputMap.put(pageUpStroke, "PAGE_UP");
KeyStroke pageDownStroke = KeyStroke.getKeyStroke(KeyEvent.VK_PAGE_DOWN, 0);
inputMap.put(pageDownStroke, "PAGE_DOWN");
KeyStroke escapeStroke = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0);
inputMap.put(escapeStroke, "ESCAPE");
rootPane.getActionMap().put("ESCAPE", escapeActionListener);
rootPane.getActionMap().put("HOME", homeActionListener);
rootPane.getActionMap().put("END", endActionListener);
rootPane.getActionMap().put("PAGE_UP", pageUpActionListener);
rootPane.getActionMap().put("PAGE_DOWN", pageDownActionListener);
return rootPane;
}
Home (Pos1) und End funktionieren, wie sie sollen, die Frage ist, was ich bei Page Down und Page Up eintrage. Ich hab schon gegoogelt und für Tabellen auch Lösungen gefunden, aber nichts, das ich einfach so übertragen konnte. Hat hier vielleicht jemand eine weitere Suchanregung oder gar Lösung?