如何找到滚动条滑块的大小?

时间:2013-09-25 13:14:59

标签: java slider scrollbar jscrollpane

我正在编写一个比较两个图像的程序。每个图像都显示在jScrollPane内的jLabel中。我想让用户点击&拖动图像以在jScrollPane内移动图像,当用户移动图像时,另一个移动图像。问题是当我有两个不同大小的图像时,因为它们以相同的增量移动而不会同时到达终点。我正试图找到滑块的大小,使它们正确移动并同时到达终点。

jScrollPane1 = new javax.swing.JScrollPane();
jScrollPane1.getHorizontalScrollBar().addAdjustmentListener(new HorizontalScrollBarMoved());
jScrollPane1.getVerticalScrollBar().addAdjustmentListener(new VerticalScrollBarMoved());


class HorizontalScrollBarMoved implements AdjustmentListener{
        @Override
        public void adjustmentValueChanged(AdjustmentEvent ae){

            jScrollPane1.getHorizontalScrollBar().setValue(ae.getValue());
            jScrollPane2.getHorizontalScrollBar().setValue(ae.getValue());
            jScrollPane3.getHorizontalScrollBar().setValue(ae.getValue());
        }
    }

class VerticalScrollBarMoved implements AdjustmentListener{
        @Override
        public void adjustmentValueChanged(AdjustmentEvent ae){

            jScrollPane1.getVerticalScrollBar().setValue(ae.getValue());
            jScrollPane2.getVerticalScrollBar().setValue(ae.getValue());
            jScrollPane3.getVerticalScrollBar().setValue(ae.getValue());
        }
    }


private void imageLabel1MouseDragged(java.awt.event.MouseEvent evt) {                                         

        int horizontalScrollBarInitialValue, verticalScrollBarInitialValue;
        horizontalScrollBarInitialValue = ScrollPane1.getHorizontalScrollBar().getValue();
        verticalScrollBarInitialValue = jScrollPane1.getVerticalScrollBar().getValue();

        jScrollPane1.getHorizontalScrollBar().setValue(horizontalScrollBarInitialValue - (evt.getX() - mousePressedX)/30);
        jScrollPane1.getVerticalScrollBar().setValue(verticalScrollBarInitialValue - (evt.getY() - mousePressedY)/30);           
    }  

mousePressedX是我存储X坐标的变量,我第一次按下鼠标拖动图像。

1 个答案:

答案 0 :(得分:0)

我怀疑你能找到滑块大小。它会自动调整。您应该找到JScrollPage的尺寸,并将其与可见View的尺寸进行比较。