Java Swing, JScrollPane example
JScrollPane 은 JList 등 다른 콤포넌트를 안에 두고 가장자리에 스크롤바를 생성해주는 컨테이너 클래스이다
예를 들어, JList 에 포함된 항목 5개만 보여지고 그 이상의 항목이 있는 경우에는 수직 스크롤바가 나타나게 하려면 다음과 같이 하면 된다
JList<String> list = new JList<>();
.....
list.setVisibleRowCount(5);
JScrollPane sp = new JScrollPane(list);
sp.setBounds(100,20,sp.getPreferredSize().width, sp.getPreferredSize().height );
contentPane.add(sp);
package org.kdea.swing; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.*; public class MyFrame extends JFrame { private Container contentPane; private JButton btn; private JLabel lbl; private JList<String> list; private JScrollPane sp; public MyFrame(String title) { super(title); setDefaultCloseOperation(EXIT_ON_CLOSE); setBounds(200, 100, 500,500); contentPane = getContentPane(); contentPane.setLayout(null); java.util.List<String> data = new ArrayList<>(); data.add("강호동"); data.add("이수근"); data.add("김병만"); data.add("박세리"); data.add("박찬호"); data.add("김연아"); MyListModel mlm = new MyListModel(data); list = new JList<>(); //list.setBounds(100, 20, 150, 200); // 크기와 위치는 SP에서 지정함 list.setVisibleRowCount(5); // 보여질 아이템 수 설정 list.setModel(mlm); sp = new JScrollPane(list); sp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); int width = sp.getPreferredSize().width; // 적절한 폭 int height = sp.getPreferredSize().height; // 적절한 높이 sp.setBounds(100, 20, width, height); contentPane.add(sp); btn = new JButton("색상선택"); btn.setBounds(261, 20, 100, 20); btn.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { java.util.List<String> data = new ArrayList<>(); data.add("흰색"); data.add("노랑"); data.add("청색"); data.add("홍색"); data.add("색1"); data.add("색2"); data.add("색3"); data.add("색4"); MyListModel mlm = new MyListModel(data); list.setModel(mlm); } }); contentPane.add(btn); setVisible(true); } }