JPanel이있는 JScrollPane이 있습니다. JPanel에는 많은 다른 구성 요소가 있습니다 (예 : Labels, JTextFields, JTextAreas). 이러한 구성 요소는 프로그래밍 방식으로 (런타임에 사용자 요청에 따라) 추가됩니다. JPanel은 SpringLayout을 사용합니다. 스크롤하지 않으면 계산이 제대로 수행되지 않기 때문에 구성 요소를 추가 한 후 JPanel의 기본 크기를 계산합니다. 구성 요소를 추가하고 기본 크기를 계산하는 것은 prepareGui() 메소드의 일부입니다. 구성 요소에 표시된 데이터는 주기적으로 새로 고쳐집니다 (청취자가 호출하는 내 refreshData() 메소드에서).데이터 새로 고침 후 스크롤 막대가 이동합니다.
내 문제 : 새로 고침 후 스크롤 막대는 항상 고정 위치로 설정됩니다 (이유를 모르겠습니다). 나는 상쾌하게 한 후에 스크롤 바를 낡은 위치에두기를 원한다.
스크롤 막대가 움직이는 곳을 찾으려고했습니다. 나는 시작과 refreshData() 메소드의 끝에서 일부 값을 확인하지만, 그들은 동일 (그들은 refreshData의 내부 변화하지 않았다()) :
는scrollPane.getVisibleRect().getX()
scrollPane.getVisibleRect().getY()
scrollPane.getVisibleRect().getWidth()
scrollPane.getVisibleRect().getHeight()
panel.getVisibleRect().getX()
panel.getVisibleRect().getY()
panel.getVisibleRect().getWidth()
panel.getVisibleRect().getHeight()
scrollPane.getHorizontalScrollBar().getX()
scrollPane.getHorizontalScrollBar().getY()
scrollPane.getHorizontalScrollBar().getWidth()
scrollPane.getHorizontalScrollBar().getHeight()
scrollPane.getHorizontalScrollBar().getValue()
scrollPane.getVerticalScrollBar().getX()
scrollPane.getVerticalScrollBar().getY()
scrollPane.getVerticalScrollBar().getWidth()
scrollPane.getVerticalScrollBar().getHeight()
scrollPane.getVerticalScrollBar().getValue()
레이아웃 매니저의 변경은하지 않았다 효과.
한 가지를 눈치 챘습니다 (어떤 의미가 있는지는 알 수 없습니다). 원하는 크기 만 prepareGui()에 설정하면 스크롤 막대가 끝까지 이동합니다. 크기를 설정하면 스크롤바가 이상하고 고정 된 위치로 이동합니다.
어떻게 방지 할 수 있습니까? 스크롤 막대는 현재 위치를 유지해야합니다.