티스토리 뷰
체크박스 JCheckBox
패널 생성 후 프레임에 부착
체크박스 생성 후 패널에 부착
public void showFrame() {
JFrame f = new JFrame();
f.setBounds(400, 300, 400, 200);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel p = new JPanel();
f.add(p, BorderLayout.CENTER);
JCheckBox cb1 = new JCheckBox("Java");
JCheckBox cb2 = new JCheckBox("JSP");
JCheckBox cb3 = new JCheckBox("Android");
JCheckBox cb4 = new JCheckBox("전체선택");
p.add(cb1); p.add(cb2); p.add(cb3); p.add(cb4);
f.setVisible(true);
}
전체선택 / 해제되게 만들어보기
cb4.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
cb1.setSelected(cb4.isSelected());
cb2.setSelected(!cb4.isSelected()); // 혼자 반대로~
cb3.setSelected(cb4.isSelected());
cb4.setText(cb4.isSelected() ? "전체선택 해제" : "전체선택");
}
});
여기서 등장한 토글의 개념과
if ~ else 구문일 때 이런 식으로도 가능하다는 걸 떠올리자!
콤보박스 JComboBox
여러 항목을 목록 형태로 나열하는 컴포넌트
= UIPlatform (XPatform, miplatform, Nexacro)
= selectBox (HTML, JavaScript), DropDownList = DDL(C#)
- 목록은 Vector 객체를 사용하여 저장하고, JComboBox 객체 생성자에 전달하여 표시한다.
콤보박스에 표시할 데이터를 Vector 객체에 전달
이름을 문자열로 저장하므로 제네릭 타입을 String 타입으로 지정
Vector<String> listData = new Vector<String>();
listData.add("항목을 선택하시오");
listData.add("항목1");
listData.add("항목2");
listData.add("항목3");
JComboBox 객체 생성 시 생성자 파라미터로 목록이 저장된 Vector 객체 전달
JComboBox comboBox = new JComboBox(listData);
p.add(comboBox);
JComboBox를 먼저 생성하고 차후에 데이터를 추가하는 게 가능하다(setVisible 때 통합된다)
입력된 값을 출력 (제목 제외)
comboBox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 콤보박스에 선택된 항목이 출력
// System.out.println(comboBox.getSelectedIndex());
// System.out.println(comboBox.getSelectedItem());
// 첫번째 항목(제목)을 제외한 나머지를 선택했을 때만 항목 출력
if(comboBox.getSelectedIndex() > 0) {
System.out.println(comboBox.getSelectedItem());
}
}
});
if(comboBox.getSelectedIndex() != 0) 보다 if(comboBox.getSelectedIndex() > 0) 의 연산속도가 더 빠르다
스피너 JSpinner
- 데이터를 목록 형태로 사용하는 것은 콤보박스와 같다.
목록을 모두 표시하지 않고 화살표를 눌러서 목록을 하나씩 회전시키는 컴포넌트
- 별다른 데이터 추가 및 설정이 없을 경우, 기본적으로 정수 데이터가 사용된다.
리스트니까 ArrayList 사용해서
JSpinner spinner = new JSpinner();
ArrayList<String> items = new ArrayList<String>();
items.add("자바"); items.add("JSP"); items.add("Android");
SpinnerListModel slm = new SpinnerListModel(items);
spinner.setModel(slm);
f.add(spinner);
순서는 입력한 순서대로(거꾸로) 출력된다
람다식 사용해서 값이 출력되게 만들기
spinner.addChangeListener(e -> {
System.out.println(spinner.getValue());
});
f.add(spinner, BorderLayout.CENTER);
'배운 것 기록 > java' 카테고리의 다른 글
절대값 구하기 - 삼항연산자 / Math.abs() (1) | 2022.10.06 |
---|---|
JTable (0) | 2022.07.28 |
JOptionPane (0) | 2022.07.27 |
JTextField, JPanel (0) | 2022.07.27 |
레이아웃(layout) (0) | 2022.07.26 |
댓글