2014-03-31 5 views
0

프레임에 JScrollBar가 있고 ScrollFrame에 JScrollBar가없고 스크롤 막대 노브/슬라이더가 정말 얇습니다. 스크롤 막대의 속성을 변경하려고 시도하고 사용자 정의 JScrollBar 구성 요소를 만들려고했지만 스크롤 막대 노브의 크기를 변경하는 방법을 찾지 못했습니다. 어떤 도움을 많이 주셔서 감사합니다, 감사합니다!JScrollBar Thumb Size를 변경 하시겠습니까?

+0

당신은 당신이 '말'과 스크롤 노브/슬라이더가 정말 얇다 ",'수평 스크롤 또는 수직이를 때 스크롤 구획을 – mKorbel

+0

를 사용하는 방법 offcial 오라클 자습서를 읽었다하시기 바랍니다 하나? 제가 물어 보는 이유는 "얇은"소리를들을 때, 나는 그것을 왼쪽에서 오른쪽으로의 폭으로 간주한다는 것입니다. 따라서 넓은 가로 스크롤 썸은 가용 한 스크롤이 많지 않음을 나타냅니다. 반면 얇은 가로 썸은 사용 가능한 스크롤이 많이 있음을 나타냅니다. 이 IMHO는 사용자가 스크롤 할 수있는 양을 시각적으로 알려주기 때문에 변경하면 안됩니다. 수직 스크롤 슬라이더/썸의 너비를 언급했다면 그것은 또 다른 이야기입니다. – splungebob

+0

불명확해서 죄송합니다. 무슨 의미입니까? '([<] - [] ------------ [>])' 하지만이 스크롤바가 필요합니다 : '([<] - [] ----- [>])' –

답변

0

layout managerlook & feel이 작업을하게하십시오. 이 예제는 NimbusLookAndFeel 스크롤 막대를 프레임의 내용 창의 BorderLayout.SOUTH 영역에 표시합니다. pack() 중앙 패널의 폭과 L & F.

부록에 의해 정의 된 바람직한 높이를 채용하는 바 발생 방법 참고 : 스크롤 바의 엄지의 실제 도장은 Look & Feel 주어진위한 paintThumb()ScrollBarUI 구현 취급 . 자신의 대체품으로 사용하거나 third party variation을 사용할 수 있습니다.

image

import java.awt.BorderLayout; 
import java.awt.Dimension; 
import java.awt.EventQueue; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JScrollBar; 
import javax.swing.UIManager; 

/** 
* @see http://stackoverflow.com/a/22766340/230513 
*/ 
public class Test { 

    private void display() { 
     JFrame f = new JFrame("Test"); 
     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     f.add(new JPanel() { 
      @Override 
      public Dimension getPreferredSize() { 
       return new Dimension(240, 120); 
      } 
     }); 
     f.add(new JScrollBar(JScrollBar.HORIZONTAL), BorderLayout.SOUTH); 
     f.pack(); 
     f.setLocationRelativeTo(null); 
     f.setVisible(true); 
    } 

    public static void main(String[] args) throws Exception { 
     UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel"); 
     EventQueue.invokeLater(new Runnable() { 

      @Override 
      public void run() { 
       new Test().display(); 
      } 
     }); 
    } 
} 
1

setVisibleAmount의 올바른 사용 목적을 해결합니다.

우리 모두가 알다시피 엄지 손가락 크기는 기본 콘텐츠의 가시적 양을 나타냅니다. 예 : 가로 스크롤 막대의 경우 콘텐츠의 50 %가 표시되고 엄지 손가락의 너비는 트랙 너비의 50 %입니다.

JScrollBar의 경우, visibleAmount의 기본값은 10으로 설정됩니다. 엄지의 크기는 visibleAmount/(maximum - minimum)의 비율에 비례합니다.

그러나 이것은 기본 환경을 망칠 수 있습니다.

이 질문에 대한 답변을 보내주십시오.

+0

이 질문에 대한 답을 제공하지 않습니다. 비평하거나 저자의 설명을 요청하려면 게시물 아래에 의견을 남겨 둡니다. –

+0

의견을 주신 @Alexis. 더 많은 설명을 추가했습니다. – kujeensiti

0

조금 늦었지만 여전히 일부 사람들이 필요할 수도 있습니다. 나는 며칠 전이 문제를 가지고 있으므로 JScrollBar 클래스와 BasicScrollBarUI을 확인했습니다.

UIManager.put("ScrollBar.minimumThumbSize", new Dimension(wanted_width, wanted_height)); 

아래 갈 크기를 원하는 결코 엄지 손가락을 강제로 :

은 당신이해야 할 모든 JScrollBar 선언/사용하기 전에이 줄을 추가하는 것입니다 썸에 대한 고정 된 크기로.

ScrollBar.maximumThumbSize

UIManager 재산의 열쇠입니다