我正在编写一个比较两个图像的程序。每个图像都显示在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坐标的变量,我第一次按下鼠标拖动图像。
答案 0 :(得分:0)
我怀疑你能找到滑块大小。它会自动调整。您应该找到JScrollPage
的尺寸,并将其与可见View
的尺寸进行比较。