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