[swing] JScrollPane

jmkim·2023년 6월 28일
0

swing

목록 보기
7/9

JScrollPane

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
    스크롤 내에 view가 스크롤 사이즈를 오버했을 떄 스크롤을 나타냄
  • 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
    스크롤의 색상을 지정하는 메소드
    • thumbColor : 스크롤 막대
    • trackColor : 스크롤 막대 외부

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;
            }
        });
    }

}


추가 필요한 설명이 있으면 댓글로 달아주세요.
감사합니다. 😀

0개의 댓글