1

我正在编写一个比较两个图像的程序。每个图像都显示在 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 坐标的变量,我第一次按下鼠标拖动图像的位置。

4

1 回答 1

0

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

于 2013-09-25T13:22:12.143 回答