[英]How do I get the current location of bar in scroll bar?
考慮下圖:
有一個垂直滾動條和一個水平滾動條。 單擊確定后 ,該框架將消失。
經過一些其他工作之后,我想讓用戶保持現在的位置,該位置可能在具有相同寬度和高度的不同圖像中。 因此,我想跟蹤滾動條中的條。
是否有任何內置函數來獲取的百分比或東西來get
和set
該欄的位置?
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.