JComboBox comboBox = new JComboBox(); // String[] 타입을 사용하여 표시할 항목을 생성 // ⇒ 배열이므로 생성 후 크기 고정 //comboBox.setModel(new DefaultComboBoxModel(new String[] {"과목 선택", "JAVA", "JSP", "ANDROID"})); // Vector 타입을 사용하여 표시할 항목을 생성 // => 컬렉션이므로 생성 후에도 크기(항목) 변경 가능 Vector<String> list = new Vector<String>(); list.add("과목선택"); list.add("JAVA"); list.add("JSP"); list.add("ANDROID");
// JComboBox 에 입력된 텍스트 내용 추가 // 1. JComboBox 객체로부터 Model 객체 가져오기 DefaultComboBoxModel<String> model = (DefaultComboBoxModel<String>) comboBox.getModel(); // 2. Model 객체의 addElement() 메서드 호출하여 항목 추가 model.addElement(textField.getText());
⇒
추가 누르니까 리스트로 들어감!
< 동적 select 박스 >
// JComboBox 객체에 ActionListener 직접 적용 가능 comboBox.addActionListener(new ActionListener() { @Override publicvoid actionPerformed(ActionEvent e) { System.out.println("인덱스 : " + comboBox.getSelectedIndex()); System.out.println("아이템 : " + comboBox.getSelectedItem()); } });
위에 버튼 액션리스너 복사 해 와서 comboBox 로 바꾸기만 하기!
확인 안눌러도 이제 콘솔창에 뜸
⇒ 쇼핑몰 할 때 동적 select 많이 사용! 카테고리 별로 누르면 바뀌도록….
관리자페이지 같은 거 웹으로도 만들고 JAVA 로도 만들 수 있기 때문에… JAVA 로도 만들어보기!
======== Ex3.java(Ex2.java 복사해와서 기본틀만 남기고 다 지우기)
design 탭
< JSpinner >
center - JSpinner
South - JButton
JSpinner spinner = new JSpinner(); spinner.setFont(new Font("굴림체", Font.PLAIN, 30)); spinner.setModel(new SpinnerNumberModel(new Integer(0), null, null, new Integer(1))); getContentPane().add(spinner, BorderLayout.CENTER);
초기값(시작값), 최소값, 최대값
Date 탭
근데 얘는 불편해서 많이 안 씀 ( 보통은 칸 다 따로따로 만든다 )
List 탭
탭 3개 마다 객체들 다 다름!
우리는 제일 복잡한 ListModel 쓸 거
// 1. String[] 객체를 생성하여 항목을 추가하는 방법 //spinner.setModel(new SpinnerListModel(new String[] {"과목을 선택하세요", "JAVA", "JSP", "ANDROID"})); // 2. Model 객체를 생성하여 항목을 추가하는 방법 spinner.setModel(new SpinnerListModel(Arrays.asList("과목을 선택하세요", "JAVA", "JSP", "ANDROID")));
// 2. Vector 객체를 생성하여 항목 추가 후 JList 객체에 Vector 객체 추가하는 방법 Vector<String> vList = new Vector<String>(Arrays.asList("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12")); JList list = new JList(vList);
최종!
앞이랑 똑같이 됨!
근데 아래부분까지 안보임 ⇒ 스크롤바 필요
< JScrollPane >
필요에 따라 스크롤 자동으로 달아줌!
> 일단 리스트 없애기
Center 에 JScrollPane 넣기
// 스크롤바 기능을 제공하는 JScrollPane 객체 생성 // => JTable, JList 등 스크롤이 필요한 컴포넌트를 결합하여 사용 JScrollPane scrollPane = new JScrollPane(); // JFrame 또는 JPanel 등 필요한 곳에 JScrollPane 객체 부착 getContentPane().add(scrollPane, BorderLayout.CENTER); JList list = new JList(); // JScrollPane 객체에 스크롤할 객체를 추가하기 위해 // setViewportView() 메서드에 스크롤바를 동작시킬 객체 전달 scrollPane.setViewportView(list);
이 부분이 중요! 스크롤 만들어서 거기 넣어줘야됨!
나중에 테이블도 이렇게 만들 거 (회원정보 같은 거 뿌릴 때 스크롤바 필수)
Vector<String> vList = new Vector<String>(Arrays.asList("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12")); JList list = new JList(vList); // JScrollPane 객체에 스크롤할 객체를 추가하기 위해 // setViewportView() 메서드에 스크롤바를 동작시킬 객체 전달 scrollPane.setViewportView(list);
필드 1. 번호(idx) INT형 PK(PRIMARY KEY) AI(AUTO_INCREMENT) 2. 이름(name) VARCHAR(20) NN 3. 나이(age) INT형 NN 4. 성별(gender) VARCHAR(2) NN 5. E-Mail(email) VARCHAR(50) NN UN 6. 주민번호(jumin) VARCHAR(14) NN UN
CREATE TABLE member2 ( idx INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(20) NOT NULL, age INT NOT NULL, gender VARCHAR(20) NOT NULL, email VARCHAR(50) NOT NULL UNIQUE, jumin VARCHAR(14) NOT NULL UNIQUE );
다시 이클립스로 돌아와서
======== Member2Join.java 만들기
오른쪽 정렬
콤보박스 선택 시 잠김
직접입력 선택 시 풀림 → 포커스
publicboolean inputCheck() { String nameRegex = "^[가-힣]{2,5}$"; // 한글 2 ~ 5글자 String ageRegex = "^[0-9]{1,3}$"; // 나이 숫자 1 ~ 3자리 // 이름 정규 표현식 틀렸을 때 if(!Pattern.matches(nameRegex, textField.getText())) { System.out.println("이름을 한글 2 ~ 5 글자로 입력하세요!"); textField.requestFocus(); returnfalse; } // 나이 정규 표현식 틀렸을 때 if(!Pattern.matches(ageRegex, textField_1.getText())) { System.out.println("나이를 숫자 1 ~ 3자로 입력하세요!"); textField_1.requestFocus(); returnfalse; } returntrue; }