3. Java GUI Control 2

한담곰·2022년 10월 12일
0

쏘의 학교 일기

목록 보기
3/10
post-thumbnail

오늘도 자바!!! 빠이팅~

목차

  • CheckBox Control
  • RadioButton Control
  • Choice & ComboBox Control
  • List Control
  • 1. CheckBox Control

    기능

    다중 선택을 구현할 수 있다.

    생성자 및 메서드

    Constructor Function
    Checkbox() Blank checkbox 생성
    Checkbox(String text) Text 문자열의 checkbox 생성
    Checkbox(String text, Boolean state) Text 문자열을 가지며, state 값에 따라 선택 여부 결정
    Checkbox(String text, Boolean state, CheckboxGroup group) Text 문자열을 가지며, state 값에 따라 선택 여부를 결정. group으로 명시된 그룹의 check box를 생성

    Method Function
    setText(String text) CheckBox의 Text 지정
    String getText() CheckBox의 Text 반환
    setSelected(Boolean b) CheckBox의 선택 여부 지정
    Boolean isSelected() CheckBox의 선택 여부 반환 (선택되어 있으면 True, 아니면 False)

    2. RadioButton Control

    기능

    단일 선택 구현이 가능하다.

    메서드

    Method Function
    setText(String text) Radio Button의 Text 지정
    String getText() RadioButton의 Text 반환
    setSelected(Boolean b) Radio Button의 선택 여부 지정
    Boolean isSelected() Radio Button의 선택 여부 반환 (선택되어 있으면 True, 아니면 False)

    CheckBox & RadioButton Control 예제 프로그램

    확인(OK) Button을 클릭하면 결제 방법과 회원 구분에서 선택한 내용을 TextArea에 추가하는 프로그램!

    Source

    pirvate void btnOKActionPerformed(java.awt.event.ActionEvent evt) {
    	String strData = "회원님은 ";  // 문자열 변수 strData 선언
        
        if (jRadioButton.isSelected()) {	// RadioButton이 선택되어 있으면,
        	strData += "회원 자격으로";
        } else {
        	strData += "비회원 자격으로";
            }
        
        if (jCheckBox1.isSelected()) {
        	strData += jCheckBox1.getText();
        }
        
        if (jCheckBox2.isSelected()) {
        	strData += jCheckBox2.getText();
        }
        
        if (jCheckBox3.isSelected()) {
        	strData += jCheckBox3.getText();
        }
        
        strData += " 결제 방법을 선택하였습니다. \n";
        jTextArea1.setText(strData_;
        
        strData = null;
    }

    Design

    실행 결과


    2. ComboBox Control

    기능

    Drop-Down 리스트를 구현할 수 있고, addItem() 메서드를 사용하여 Drop-Down 항목을 추가할 수 있다.

    메서드

    Method Function
    int getItemCount() Item 수 반환
    String getItemAt(int index) Index에 해당하는 Item 반환
    void addItem(Object obj) obj를 ComboBox Item으로 추가
    Object getSelectItem() 선택된 Item 반환
    int getSelectedIndex() 선택된 Item의 Index를 반환

    ComboBox Control 예제 프로그램

    (1) ComboBox에서 직업을 선택하고, 확인(OK) 버튼을 클릭하면 선택한 직업을 TextArea에 표시하는 프로그램.

    Source

    private void btnOKActionPerformed(java.awt.event.ActionEvent evt) {
    	String strData = null;
        strData = "회원의 직업은 " + jComboBox1.getSelectedItem().toString() + "입니다. \n";
        jTextArea1.setText(strData);
    }

    Design

    Item을 넣어준다.

    실행 결과


    (2) ComboBox에서 해당 직업을 선택하면, 선택한 직업을 바로 TextArea에 표시하는 프로그램.
    Hint~ ItemStateChanged(ItemEvent evt)

    Event Handler인 ItemStateChanged(ItemEvent evt)란,,, 아이템 선택 시 발생하는 이벤트를 처리하는 핸들러이다.

    Source

    private void jComboBox1ItemStateChanged(java.awt.event.ItemEvent evt) {
    	String strData = null;
        String strJob = jComboBox1.getSelectedItem().toString();
        strData = "회원님의 직업은 " + strJob + "입니다. \n";
        jTextArea1.setText(strData);
    }

    Design

    이벤트 핸들러 설정!!

    실행 결과

    확인(OK) 버튼을 클릭하지 않아도 TextArea에 선택한 직업이 표시되는 것을 확인할 수 있다.


    3. Choice Control

    기능

    Drop-Down 리스트를 구현할 때 사용되고, addItem() 메서드를 사용하여 Drop-Down 항목을 추가할 수 있다.

    메서드

    Method Function
    int countItems() Choice Control의 아이템 수 반환
    String getItem(int index) Index에 해당하는 아이템 반환
    String getSelectItem() 선택된 아이템 반환
    int getSelectedIndex() 선택된 항목의 Index 반환
    void select(int index) index에 해당하는 아이템 반환
    void select(String str) str에 해당하는 아이템 선택

    4. List Control

    기능

    다중 아이템이 리스트에 나타나도록 구현하고 싶을 때 사용된다.

    생성자와 메서드

    Constructor Comment
    JList(); 전달 인자가 없는 생성자
    JList(Object[] listData); 배열 형태의 데이터를 갖는 list 생성
    JList(Vector listData); 벡터를 갖는 list 생성
    JList(ListModel dataModel); 데이터 모델을 갖는 list 생성

    Method Functione
    getSize() List의 아이템 수 반환
    void setListData(Object[] listData) Object 클래스로 List에 추가
    void setListData(Vector listData) Vector 클래스로 List에 추가
    int getSelectrdIndex() 선택된 아이템의 Index 반환
    int[] getSelectedIndices() 다중 선택 모드일 때, 선택된 아이템의 index를 배열 로 반환
    int setSelectedIndex() 선택된 아이템의 Index 지정
    int[] setSelectedIndices() 다중 선택 모드일 때, 선택된 아이템의 index 배열 지정

    잠깐만... 예제 풀기 전에... Vector?... 알아보고 갑시다..... 그리고 Object 클래스 개념도 같이 리마인드 해 볼까용....

    Vector란...

    Vector란 Collection 프레임워크의 일부이며, java.util 패키지에 소속되어 있다. ArrayList와 동일한 구조를 가지며, 배열의 크기가 자동으로 조절이 된다.

    Vector의 특징은, 항상 동기화되어 있고 Collection 프레임워크에 없는 메서드들을 사용 가능하다는 것이다. 하지만, 동기화라는 특징이 있기에 Thread가 아닌 환경에서는 거의 사용되지 않는다고 한다... 또, 항상 동기화되므로 Thread 환경에서의 안정성은 높지만, ArrayList와 비교하여 추가, 검색, 삭제의 성능은 떨어진다.

    자! 이제 Vector의 선언, 값 추가 및 제거 방법에 대해 알아보자.

    Vector 선언하기

    Vector myVC = new Vector();  // 타입 설정 X. Object로 사용.
    
    Vector<VectorDemo> demo = new Vector<VectorDemo>();  // 타입 설정 O. VectorDemo 객체로 선언
    
    Vector<Integer> i = new Vector<Integer>();  // int 타입으로 선언
    Vector<Integer> i2 = new Vector<>();  // 타입 선언 생략
    Vector<Integer> i3 = new Vector<Integer>(10);  // 초기 용량 세팅
    Vector<Integer> i4 = new Vector<Integer>(Arrays.asList(1, 2, 3, 4));  // 초기 값 세팅
    
    Vector<String> s = new<String>();  // String 타입
    Vector<Character> c = new Vector<Character>();  // Char 타입

    Vector 값 추가하기

    import java.util.Vector;
    
    public class VectorDemo {
    	public state void main(String[] args) {
        	Vector V = new Vector();
            
            V.add("Hello");
            V.add("World");
            V.add(1, "Damgom");  // Index 1 위치에 추가
            V.add(null);
            
            System.out.print(V);
            }
    }

    실행 결과 : [Hello, Damgom, World, null]

    Vector 값 제거하기

    import java.util.Vector;
    
    public class VectorDemo {
    	public state void main(String[] args) {
        	Vector V = new Vector();
            
            V.add("Hello");
            V.add("World");
            V.add(1, "Damgom");  // 1번째 위치에 추가
            V.add(null);
            
            System.out.println(V);
            }
            
            V.remove(1);  // Index 1의 값 제거
            System.out.println(V);
            
            V.removeAllElements();  // 모든 데이터 제거
            System.out.println(V);
            
            V.add("Sohee");
            V.add("Damgom");
            System.out.println(V);
            V.clear();  // 모든 데이터 제거
            System.out.println(V);
    }
    실행 결과 :
    [Hello, Damgom, World, null]
    [Hello, World, null]
    []
    [Sohee, Damgom]
    []

    출처 사이트


    Object 클래스란...

    단순하게! 모든 클래스는 Object 클래스의 자식 클래스이다. 즉, Object 클래스는 자바에서 최상위 클래스인 것이다. Object 클래스에는 다양한 메서드가 존재하는데, 어떤 클래스에서도 이 메서드를 호출할 수 있다. 그럼 Object 클래스의 대표 메서드 종류에 대해 알아보자.

    학교 강의를 들으면서 자주 썼던 메서드를 데리고 와 보았다...

    (1) equals() 메서드 : 두 객체가 동일한 객체라면 True, 다르다면 False를 리턴.
    (2) toString() 메서드 : 객체의 문자 정보를 리턴. 즉, 객체를 문자열로 표현.

    자세한 내용은 아래 사이트를 참고하면 된당.

    출처 사이트


    List Control 예제 프로그램

    Button Event Handler를 사용하여 List의 아이템을 추가, 삭제하는 기능을 구현한 프로그램.

    Source

    private void initComponents() {
    // 해당 소스코드 이해를 위한 코드만 작성함.
    	lstCompany.setModel(new javax.swing.AbstractListModel<String>() {
                String[] strings = { "NHN", "Daum", "Yahoo", "Google", " " };
                public int getSize() { return strings.length; }
                public String getElementAt(int i) { return strings[i]; }
            });
            
        jScrollPane1.setViewportView(lstCompany);
    }
    
    private void btnAddActionPerformed(java.awt.event.ActionEvent evt) {
    	Vector myVC = new Vector();  // 새로운 아이템을 저장하기 위한 Vector 선언
        int iListSize = 0;  // List 사이즈 저장할 변수
        
        iListSize = lstCompany.getModel().getSize();  // List 사이즈 반환
        
        for (int idx = 0; idx < iListSize; idx++) {
        	myVC.addElement(lstCompany.getModel().getElementAt(idx));  // List의 아이템을 myVC에 추가
            }
        myVC.addElement(txtInput.getText());  txtInput(TextField)의 문자열을 myVC에 추가
        lstCompany.setListData(myVC);  // List의 데이터 지정.
        txtInput.setText(null);
    }
    
    private void btnDelActionPerformed(java.awt.event.ActionEvent evt) {
    	Vector myVC = new Vector();
        int iList_index = 0;
        int iListSize = 0;
        
        iListSize = lstCompany.getModel().getSize();
        
        for (int idx = 0; idx < iListSize; idx++) {
        	myVC.addElement(lstCompany.getModel().getElementAt(idx));
        }
        
        iList_index = lstCompany.getSelectedIndex();
        myVC.removeElementAt(iList_index);
        lstCompany.setListData(myVC);
        txtInput.setText(null);
    }

    Design

    프로퍼티에서 모델 아이템 추가하기.

    실행 결과

    (1) run


    (2) New Item에 아이템 입력 후, 추가(Add) 버튼 클릭


    (3) NHN 아이템 선택 후, 삭제(Del) 버튼 클릭

    profile
    열심히 살아보려고 합니다...^^

    0개의 댓글