JScrollPane은 가로, 세로 스크롤이 가능하게 해주는 component이다.
주로 JTable, JList, JArea와 같은 component와 함께 사용한다.
JScrollPane은 JScrollBar가 합쳐진 형태의 component다.
가로 세로에 각각 별개의 JScrollBar가 존재한다.
setViewportView(Component view)
스크롤이 필요한 컴포넌트를 지정하는 메소드
setVerticalScrollBar(JScrollBar verticalScrollBar)
getVerticalScrollBar()
세로 스크롤 바를 지정하거나 가져오는 메소드
setHorizontalScrollBar(JScrollBar horizontalScrollBar)
getHorizontalScrollBar()
가로 스크롤 바를 지정하거나 가져오는 메소드
setVerticalScrollBarPolicy(int policy)
setHorizontalScrollBarPolicy(int policy)
스크롤 바의 표시 방식을 지정하는 메소드
표시 방식을 지정하는 변수가 가로 세로 별로 다르므로 구분하여 지정해야함
VERTICAL_SCROLLBAR_AS_NEEDED
HORIZONTAL_SCROLLBAR_AS_NEEDED
VERTICAL_SCROLLBAR_ALWAYS
HORIZONTAL_SCROLLBAR_ALWAYS
VERTICAL_SCROLLBAR_NEVER
HORIZONTAL_SCROLLBAR_NEVER
bar.setUnitIncrement(int unitIncrement)
스크롤 바의 스크롤 속도를 지정하는 메소드
bar.setUI(ScrollBarUI ui)
스크롤 바의 디자인을 지정하는 메소드
SrollBarUI를 상속받는 클래스를 전달하면 되는데 이 때 주로 BasicScrollBarUI
클래스를 사용한다.
createIncreaseButton
createDecreaseButton
configureScrollBarColors
bar.getMaximum()
bar.getMinimum()
스크롤 바의 최대 최소 위치 값을 가져오는 메소드
bar.getVisibleAmount()
스크롤 바의 현재 위치 값을 가져오는 메소드
bar.setValue(int value)
스크롤 바의 위치 값을 지정하는 메소드
public class ScrollPane extends JScrollPane {
public static void main(String[] args) {
Frame frame = new Frame(300, 500, "JScrollPane 테스트");
JPanel panel = new JPanel(new GridLayout(0, 1));
for(int i = 0; i < 50; i++) {
JLabel label = new JLabel("테스트 레이블 " + (i + 1));
label.setFont(new Font("맑은 고딕", 1, 20));
panel.add(label);
}
ScrollPane scroll = new ScrollPane(panel);
frame.add(scroll);
frame.setVisible(true);
}
public ScrollPane(Component view) {
setViewportView(view);
setBorder(null);
getVerticalScrollBar().setUnitIncrement(20);
getVerticalScrollBar().setUI(new BasicScrollBarUI() {
@Override
protected JButton createDecreaseButton(int orientation) {
JButton btn = new JButton();
btn.setPreferredSize(new Dimension(0, 0));
btn.setMinimumSize(new Dimension(0, 0));
btn.setMaximumSize(new Dimension(0, 0));
return btn;
}
@Override
protected JButton createIncreaseButton(int orientation) {
JButton btn = new JButton();
btn.setPreferredSize(new Dimension(0, 0));
btn.setMinimumSize(new Dimension(0, 0));
btn.setMaximumSize(new Dimension(0, 0));
return btn;
}
@Override
protected void configureScrollBarColors() {
this.thumbColor = Color.LIGHT_GRAY;
this.trackColor = Color.white;
}
});
}
}
추가 필요한 설명이 있으면 댓글로 달아주세요.
감사합니다. 😀