簡體   English   中英

如何獲取滾動條中條的當前位置?

[英]How do I get the current location of bar in scroll bar?

概述:

考慮下圖:

我的截圖

有一個垂直滾動條和一個水平滾動條。 單擊確定后 ,該框架將消失。

經過一些其他工作之后,我想讓用戶保持現在的位置,該位置可能在具有相同寬度和高度的不同圖像中。 因此,我想跟蹤滾動條中的條。

題:

  • 是否有任何內置函數來獲取的百分比或東西來getset該欄的位置?

    • 如果是,那是什么?
    • 如果沒有,該如何處理?

碼:

MultipleProcess.java類,實際上打開了框架。

// imports and package description were here

public class MultipleProcess extends javax.swing.JDialog {
    SinglePaperEvaluation upperClass;
    BatchPaperEvaluation upperClass2;
    File imageFilePath;
    BufferedImage image;

    public MultipleProcess(boolean modal,File imageFile,SinglePaperEvaluation upper, BatchPaperEvaluation upper2) {
        super(upper==null?upper2:upper,"Co-ordinate Detector", modal);
        initComponents();
        upperClass = upper;
        upperClass2 = upper2;
        imageFilePath = imageFile;

        //adjust screen and windows listener were here

        loadImage();//custom function, it loads image in the jScrollPaneImageScreen

        if(upperClass2!=null){
            upperClass2.setVisible(false);

            //scrollbars states loading part
            jScrollPaneImageScreen.getVerticalScrollBar().setValue(upperClass2.verticalBar);
            jScrollPaneImageScreen.getHorizontalScrollBar().setValue(upperClass2.horizontalBar);
//            if(upperClass2.react!=null)jScrollPaneImageScreen.scrollRectToVisible(upperClass2.react);
        }

        setVisible(true);
    }

    // you can skip this function but have a look if you eager to see how am I loaded image in the pane
     private void loadImage() {
        try {
            image = ImageIO.read(imageFilePath);
            ImageIcon ii = new ImageIcon(imageFilePath.toString());
            JLabel jLabel = new JLabel(ii);
            jLabel.addMouseListener(new MouseAdapter() {
                @Override
                public void mouseClicked(MouseEvent e) {

                    int x = e.getX();
                    int y = e.getY();

                    jTextFieldX.setText(String.format("%d",x));
                    jTextFieldY.setText(String.format("%d",y));

                }
            });
            jScrollPaneImageScreen.setViewportView(jLabel);
        } catch (IOException ex) {
            Logger.getLogger(SkeletonPreparing.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

   //init Component function was here

    private void jButtonOKActionPerformed(java.awt.event.ActionEvent evt) {                                          

        if(upperClass2!=null){
            //other irrelevant processing deleted 

            //scrollbars states storing part
            upperClass2.verticalBar = jScrollPaneImageScreen.getVerticalScrollBar().getValue();
            upperClass2.horizontalBar = jScrollPaneImageScreen.getHorizontalScrollBar().getValue();
//            upperClass2.react = jScrollPaneImageScreen.getViewport().getViewRect();
            System.out.println("Stored: "+upperClass2.verticalBar+","+upperClass2.horizontalBar);
            upperClass2.setVisible(true);
        }
        dispose();
    }                                         
    //variable initializations were here
}

BatchPaperEvaluation.java類,從那里我創建了上述類的實例:

private void jButtonSubmitActionPerformed(java.awt.event.ActionEvent evt) {                                              
    // TODO add your handling code here:
    File[] filesToBeProcessed = new File(jTextFieldOMRFolderPath.getText()).listFiles(filter);
    for (File inputFile : filesToBeProcessed) {
        MultipleProcess dialog = new MultipleProcess(true, inputFile, null, this);
        //other processing
    }

    //further processing
} 

注意:

  • 我已經檢查了int getVerticalScrollBarPolicy() ,它不int getVerticalScrollBarPolicy()我的工作。

如果使用scrollPane.getVerticalScrollBar().getValue() ,則在關閉窗格時可以保存該值。

然后,當您重新加載窗格時,只需使用scrollPane.getVerticalScrollBar.setValue(savedValue)

您也將對水平滾動條執行相同的操作。

我查看了您在注釋中添加的MCVE,我強烈懷疑問題出在您給我的代碼中,可能是在調用new MultipleProcess的類中。

嘗試使用JScrollPane.getViewport().getViewRect()獲取可見的矩形。 您可以通過執行JScrollPane.getViewport().scrollRectToVisible(<saved rect>)來還原它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM