moving / scrolling up and down on three JTable simultanously.

旧时模样 提交于 2019-12-25 01:13:55

问题


I have three different jtable on three diffenernt jscrollpane - one next to the other.
I successfuly written some code that makes them all scroll together when I scroll the mouse wheel.
I inherrited JScrollpane and overriden its processMouseWheelEvent methos as follows:

  public void processMouseWheelEvent(MouseWheelEvent e) {
    ...
    if (e.getSource() == this) {
        for (BTSJScrollPane other : effected) {
            other.processMouseWheelEvent(e);
        }
    }
}

I have canelled the pageup pagedown using

 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);

But,
my only problem now is that when the user clicks up and down, they dont go together but rather scroll indipently.
Any suggestions ?
So far I wrote in my scrollpane something like

    KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(new KeyEventDispatcher() {
        @Override public boolean dispatchKeyEvent(KeyEvent e) {
            if (thisIsThesourceTable) {
                if (e.getKeyCode() == 38 || e.getKeyCode() == 40) {

                }
            }
            return false;
        }
    });

But :
1. is there a better way?
2. maybe I should do it somehow in the actionMap?
3. how do I pass the key up/down event to the other scrollpane?
4. can I know if I am near the end of the viewing part in the scroll pane? is it needed


回答1:


1, 2, & 3: You should use listeners on the scrollbars so it works with mouse, keyboard, and scrollbar interaction. That way you won't need key or mouse listeners. Here is one way:

scroll1.getVerticalScrollBar().addAdjustmentListener(new AdjustmentListener() {

    @Override
    public void adjustmentValueChanged(AdjustmentEvent e) {
       scroll2.getVerticalScrollBar().setValue(e.getValue());
    }
});

4: Look at JScrollPane's getVerticalScrollBar().getMaximumSize() and getModel() to find out if you're near the end.



来源:https://stackoverflow.com/questions/10282064/moving-scrolling-up-and-down-on-three-jtable-simultanously

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!