2 つの画像を比較するプログラムを作成しています。各画像は、jScrollPane 内の jLabel に表示されます。ユーザーが画像をクリックしてドラッグし、jScrollPane 内で画像を移動できるようにしたいと考えています。ユーザーが画像を移動すると、他の画像も移動します。問題は、同じ増分で移動し、同時に最後に到達しないため、サイズの異なる 2 つの画像がある場合です。スライダーが適切に動き、同時に最後に到達するようにスライダーのサイズを見つけようとしています。
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 座標を格納した変数です。