일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- calc.minus
- 1521
- toFixed()
- Git
- FileZilla다운로드
- FileZilla설치
- 파일질라설치
- SUB함수
- calc.plus
- excel중복체크
- push오류
- Math.round()
- addClass
- 파일질라다운로드
- removeClass
- hide
- Math.ceil()
- 주석이 먹히지 않을 때
- ctrl+/
- Math.floor()
- 소스트리인증실패
- 파일질라설치오류
- selectoptions
- Excel
- slideUp
- is_check
- index %
- selectedIndex
- 증가값
- Parent
- Today
- Total
잡동사니에도 사랑을
[21.08.26] JListEx 본문
package swing;
import java.awt.FlowLayout;
import java.util.Vector;
import javax.swing.DefaultListModel;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.ListSelectionModel;
//JFrame은 BorderLayout(동서남북)
public class JListEx extends JFrame {
public JListEx() {
super("JList Test"); // 부모 생성자 호출
setLayout(new FlowLayout());
// List가 따닥따닥 붙어서 나오는 건 setLayout을 FlowLayout으로 잡아놨기 때문.
// 현재 갖고 있는 걸 중앙을 기점으로 순서대로 붙여주게 된다.
String[] listData = { "Hong", "Gil", "Dong", "JAVA", "JSP" };
JList<String> list1 = new JList<String>(listData);
list1.setSelectedIndex(1);
// JList 바깥에 보여주는 작업 - 강사(부모)
// 안에 있는 데이터를 넣다 뺏다 하는 작업은 DefaultListModel - 매니저(자식)
// 데이터가 들어오는 항목은 문자열이고 (model)은 매니저
// model에 관련된 JList를 작성해서 넣는 것
// Model을 먼저 하거나~~~
// DefaultListModel<String> model = new DefaultListModel<String>();
// JList<String> list2 = new JList<String>(model);
// =
// List를 먼저 잡고 Model이 뒤따라오게 하거나~~~
JList<String> list2 = new JList<String>(new DefaultListModel<String>());
DefaultListModel<String> model = (DefaultListModel<String>) list2.getModel();
// 항상 부모는 자식에게 맞춰서 가야한다
// 부모인 ListModel은 자식인 DefaultListModel로 바꿔서 Casting한 다음에 보내줘야 한다
model.addElement("사과");
model.addElement("배");
model.addElement("딸기");
model.addElement("바나나");
list2.setSelectedIndex(1);
// Index 1번에 맞춰줬으니 "배"가 나옴
Vector<String> vListData = new Vector<String>();
JList<String> list3 = new JList<String>(vListData);
JScrollPane scroll = new JScrollPane(list3);
vListData.add("축구");
vListData.add("야구");
vListData.add("농구");
vListData.add("배구");
vListData.add("테니스");
vListData.add("수영");
vListData.add("육상");
vListData.add("태권도");
vListData.add("유도");
class Student { // 분명히 생성자라는 메소드 안에 클래스를 선언해서 쓴다?
// 로컬이너 몇번? 한번 쓰겠다
String id;
String name;
String department;
// 생성자를 잡자!
// 우클릭 - Source - Generator Constructor using field
public Student(String id, String name, String department) {
super();
this.id = id;
this.name = name;
this.department = department;
}
@Override
public String toString() { // 주소가 아닌 이름으로 나오게 하기 위해서
return name; // 이름만 화면에 떴으면 좋겠어
}
}
JList<Student> list4 = new JList<Student>(new DefaultListModel<Student>());
// 문자열이 아닌 student라는 클래스 객체열을 담겠다
DefaultListModel<Student> model2 = (DefaultListModel<Student>) list4.getModel();
// getmodel로 잡았으니 casting 걸어주자
list4.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); // 하나만 선택하고 싶어요
model2.addElement(new Student("100", "홍길동", "전산과"));
model2.addElement(new Student("200", "손오공", "건축과"));
model2.addElement(new Student("300", "사오정", "토목과"));
model2.addElement(new Student("400", "저팔계", "경영학"));
list4.setSelectedIndex(1);
add(list1);
add(list2);
add(scroll);
// add(list3); 라고 하면 scroll바 만들었어도 나오지 않는다
// 왜? list를 scroll에 갖다붙였기 때문에(JScrollPane scroll = new JScrollPane(list3);)
// Frame에 붙일 때는 list가 아닌 scroll을 붙여야 한다.
add(list4);
setBounds(900, 200, 400, 300);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new JListEx();
}
}
'JAVA_SE > 13_swing' 카테고리의 다른 글
[21.08.26] JButtonEx (0) | 2021.08.29 |
---|---|
[21.08.26] JTableEx2 (0) | 2021.08.29 |
[21.08.26] JTableEx (0) | 2021.08.29 |