【问题标题】:How to find the size of a scrollbar slider?如何找到滚动条滑块的大小?
【发布时间】:2013-09-25 13:14:59
【问题描述】:

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

【问题讨论】:

    标签: java slider scrollbar jscrollpane


    【解决方案1】:

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

    【讨论】:

    • 我注意到 jScrollPane 中显示的图像大小是滑块大小和滚动条中剩余空间的总和。我实际上需要找到滚动条中剩余空间的大小,我能想到的唯一方法是首先找到滑块的大小。
    • 为什么不找图片的顶部和JScrollPane#getHeight比较,或者图片的左边和JScrollPage#getWidth比较?
    • 例如我有一个宽度为 1024 的图像,而 JScrollPage#getWidth 返回 420,但是如果我将滑块移动到滚动条的末尾,图像移动的值是 610。所以滑块大小为 1024-610 = 414。我不知道如何使用 JScrollPage#getWidth 来解决我的问题,因为大小是如此不同。
    • 您应该将 JScrollPane 的宽度/设置高度完全设置为图像大小。然后滚动条将正常工作。 JScrollPane 会更小(例如高度为 420)。但是会正确滚动吗?
    • 如果我将 JScrollPane 的宽度/设置高度完全设置为图像大小,那么 jScrollPane 将占据整个屏幕。
    猜你喜欢
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    • 2021-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-06
    • 2012-12-02
    相关资源
    最近更新 更多