2024.01.26

김무영·2024년 1월 26일

ButtonGroup

  • 버튼 컴포넌트를 묶을 때 사용.
  • 묶여진 컴포넌트는 여러 개중 하나만 선택 될 수 있다.
  • non-visual component
  • 주로 JRaioButton, JCheckBox에서 사용.
  • 사용법 )
    1. 묶여질 컴포넌트 생성.
      JRadioButton jrb = new JRadioButton("라벨");
    2. ButtonGroup생성.
      ButtonGroup bg = new ButtonGroup();
    3. 묶여질 컴포넌트를 추가.
      bg.add(컴포넌트);
  • Menu
    • 프로그램에서 제공하는 기능들을 묶어서 사용자에게 보여줄 때 사용하는 컴포넌트
    • MenuBar, Menu, MenuItem으로 구성된다.
    • 사용법 )
      1. MenuBar 생성

        JMenuBar jmb = new JMenuBar();
      2. Menu 생성

        //JMenu jm = new JMenu("라벨");
        
        JMenu jmFile = new JMenu("파일");
        JMenu jmEdit = new JMenu("편집");      
      3. MenuItem 생성

        //JMenuItem jmi = new JMenuItem("라벨")  ;
        JMenuItem jmiNew = new JMenuItem("새파일");
        JMenuItem jmiUndo = new JMenuItem("취소");
      4. Menu에 MenuItem 배치

        //메뉴객체명.add(메뉴아이템객체);
        jmFile.add(jmiNew);
        jmEdit.add(jmiUndo);
      5. MenuItem을 가진 Menu를 MenuBar 붙임

        jmb.add(jmFile);
        jmb.add(jmEdit);
      6. JMenuBar를 JFrame에 설정

        JMenuBar(jmb);

Border

  • 컴포넌트들을 묶어서 보여줄 때 사용.
  • javax.swing.border 패키지에서 관련 클래스들을 제공.
  • javax.Component의 자식 클래스들은 모두 border를 가질 수 있다.
  • 사용법 )
    1. 컴포넌트 생성 ) - 주로 Cotainer Component에 설정
      JButton jbtn = new JButton();
      JPanel jp = new JPanel();
      jp.add(jbtn); // 컨테이너 컴포넌트에 여러 컴포넌트 배치
    2. Border 생성 )
      TitledBorder tb = new TitledBorder("라벨");
    3. Border 생성 )
      jp.setBorder( tb );

MVC Pattern이 도입된 Component

  • JComboBox, JList, Jtable이 존재.

  • 데이터 처리업무와 화면 처리업무, 이벤트 처리업무를 분리하여 제공하는 Component들.

  • M(Model) : 데이터를 가지고 관리하는 일. Default대상 Model. (DefaultComboBoxModel)
    V(Viewer) : 데이터를 가지고 사용자에게 보여주는 일. (JComboBox)
    C(Controller) : 이벤트 처리에 관련된 일

    • 장점

      • 코드 복잡도가 낮아진다.
      • 유지보수가 쉬워진다.(프로그램의 생명력이 길어진다.)
    • 단점

      • 파일의 개수가 많아진다. => 파일관리가 어렵다.
      • 값 넘기기와 에러처리가 어렵다.
      • 개발속도가 느려진다.

  • 생명주기가 끝날 때
    H/W => 고장날때
    S/W => 더 이상 유지보수가 안될 때 (개발비용이 유지보수 비용보다 적을 때)

JComboBox

  • DefaultComboBoxModel클래스를 Model객체로 사용하는 View객체.
  • 사용법 )
    1. Model 생성 )
      DefaultComboBoxModel<E> dcbm = new DefaultComboBoxModel<E>();
    2. Model과 has a 관계로 View 생성)
      JComboBox jbc = new JComboBox(dcbm);
    3. 데이터 추가 => Model객체 사용
      dcbm.addElement();
    4. View에서 선택한 값 얻기
      • View 선택한 엘리먼트번호 얻기
        int 인덱스 = jbc.getSelectedIndex();
      • Model에서 값 얻기
        변수명 = dcbm.getElementAt( 인덱스 );
    5. View에서 선택된 값 얻기
      • View에서 선택한 인덱스를 얻는다.
        int 인덱스 = jbc.getSelectedIndex();
      • Model에서 삭제
        dcbm.removeElementAt( 인덱스 );

JList의 사용

  • DefaultListModel 클래스를 Model객체로 사용하는 View 객체.
  • 사용법 )
    1. Model 객체생성 )
      DefaultListModel<E> dlm = new DefaultListModel
    2. Model 객체와 has a 관계로 View 생성
      JList<E> jl = new JList<e>(dlm);
    3. 값 추가 ) => Model 객체를 사용.
      dlm.addElement();
    4. 선택한 인덱스에서 값 얻기 )
      • 리스트에서 선택한 아이템에 인덱스 얻기
        int index = jl.getSelectedIndex();
      • 모델에서 인덱스에 해당하는 값 얻기
        변수명 = dlm.elementAt(index);//dlm.getElementAt( index );
    5. 선택한 인덱스의 값 삭제 )
      • 리스트에서 선택한 아이템에 인덱스 얻기
        int index = jl.getSelectedIndex();
      • 모델에서 인덱스에 해당하는 값 삭제
        dlm.removeElementAt( index );

JTable

  • DefaultTableModel 클래스를 Model객체로 사용하는 View객체.
  • ScrollBar가 없다. (ScrollBar 없이 배치되면 Column Name이 보여지지 않는다.)
    -> JScrollPane을 필요로 한다.
  • 사용법)
    1. Model 객체를 생성)

      String[] columnName={"컬럼명",,,,};
      String[][] data={
      {,,,,}//행 구분 괄호{}
      {....}//행 구분 괄호{}
      }
      DefaultTableModel dtm = new DefaultTableModel( data , columnName);
    2. Model과 has a 관계를 가진 View 생성)

      JTable jt = new JTable( dtm );
    3. 행을 추가 ) => Model 객체를 사용.

      String[] rowData = {,,,,};
      
      Dtm.addRow( rowData ); // 각 열의 방이 할당된다.
      

0개의 댓글