我在三个不同的 jscrollpane 上有三个不同的 jtable - 一个挨着另一个。
我成功地编写了一些代码,当我滚动鼠标滚轮时,它们会一起滚动。
我继承了 JScrollpane 并重写了它的 processMouseWheelEvent 方法,如下所示:
public void processMouseWheelEvent(MouseWheelEvent e) {
...
if (e.getSource() == this) {
for (BTSJScrollPane other : effected) {
other.processMouseWheelEvent(e);
}
}
}
我已经使用
final InputMap inputMap =
comp.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
inputMap.put(KeyStroke.getKeyStroke("PAGE_DOWN"), EMPTY);
inputMap.put(KeyStroke.getKeyStroke("PAGE_UP"), EMPTY);
comp.getActionMap().put(EMPTY, emptyAction);
但是,
我现在唯一的问题是,当用户向上和向下单击时,它们不会一起滚动,而是单独滚动。
有什么建议么 ?
到目前为止,我在滚动窗格中写了类似
KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(new KeyEventDispatcher() {
@Override public boolean dispatchKeyEvent(KeyEvent e) {
if (thisIsThesourceTable) {
if (e.getKeyCode() == 38 || e.getKeyCode() == 40) {
}
}
return false;
}
});
但是:
1.有更好的方法吗?
2.也许我应该在actionMap中以某种方式做到这一点?
3. 如何将按键向上/向下事件传递给另一个滚动窗格?
4. 我可以知道我是否接近滚动窗格中查看部分的末尾吗?是否需要