JAVA(객체지향프로그래밍) - Ⅶ

아현·2021년 4월 12일
0

Java

목록 보기
3/13

1. Panel


  • 컨테이너로, 다른 GUI 구성 요소를 연결할 수 있는 공간을 제공합니다.

  • 다른 패널을 부착할 수 있다. (패널에 패널을 붙일 수 있다.)

  • 생성 된 Panel을 Frame 또는 Window에 추가해야 표시됩니다.

    • 보통 Panel은 컴포넌트들을 묶는 역할을 한다.


  • 생성자

    • Panel( ) : 새로운 Panel을 생성한다.

    • Panel(LayoutManager layout) : 지정된 레이아웃 매니저를 이용하여 새로운 Panel을 생성한다.


  • 메소드

    • add(other components)

    • setSize(x,y):컴포넌트의 위치를 지정

    • setLocation(x,y): 컴포넌트의 크기를 지정

    • setBounds( ):위치와 크기를 동시에 지정

      • b.setBounds( x, y, w, h);



[실습 1]





[실습 2] - Login UI: Using Panel




2. ScrollPane

  • 컨테이어로, 스크롤이 있는 Panel을 제공 한다.

    • 단, 하나의 컴포넌트만 부착 할 수 있다.
  • 여러 컴포넌트를 부착하려면 먼저 Panel을 부착한 다음 다른 컴포넌트를 부착해야 한다.

  • 한정된 윈도우 영역보다 큰 컴포넌트를 배치할 때 사용하는 것으로 하나의 컴포넌트만 배치가 가능하다.

  • 스크롤이 가능한 컨테이너에 먼저 배치한 후 배치해야 스크롤 바가 생겨 전체 영역을 출력할 수 있다.


  • 생성자

  • ScrollPane()


  • 메소드

    • add(other components)

    • setSize, setLocation ()



[실습 3]





3. PopupMenu

  • 컨테이너로, 다른 구성 요소에 표시할 수 있는 독립 실행형 메뉴를 제공한다.

  • 마우스를 클릭하면 팝업 메뉴라는 메뉴가 표시됩니다.


  • 생성자

    • PopupMenu () : 새로운 pop-up menu를, 비어있는 이름으로 작성합니다.

    • PopupMenu (String label) : 새로운 pop-up menu를, 지정된 이름으로 작성합니다.


  • 메소드

    • add (MenuItem mi) : 지정된 메뉴 항목을 이 메뉴에 추가합니다.

    • void addNotify () : pop-up menu의 피어를 작성합니다.

    • void show (Component origin, int x, int y) : 원의 컴퍼넌트로부터의 상대 위치 x, y에 pop-up menu를 표시합니다.

    • hide()



[실습 4]

  • event class를 사용한다.

    • 이 경우 ActionListener를 꼭 구현해야한다.



4. Layout


  • 컨테이너 레이아웃

    • 즉, 틀을 만들어준다.
  • Frame 또는 Panel과 같이 컨테이너에 표시 할 수있는 Components를 관리합니다.

  • 각 컨테이너에는 자신과 관련된 기본 레이아웃 관리자(layout manager)가 있습니다.

    • BorderLayout : Window, Frame, Dialog

    • FlowLayout : Panel

  • 레이아웃 관리자(layout manager)를 변경하려면 setLayout( )을 사용합니다.


  • 기본 Layout for AWT containers

    • FlowLayout

    • BorderLayout

    • GridLayout

    • CardLayout

    • GridBagLayout



4-1. FlowLayout

  • 왼쪽에서 오른쪽으로 흐르는 것과 같은 방식으로 Components를 부착합니다.

  • Frame 또는 Panel과 같이 컨테이너에 표시 할 수 있는 구성 요소를 관리합니다.

  • Basic alignment is “CENTER”


  • Panel의 기본으로 컴포넌트들을 가로 방향으로 순서대로 나열하는 레이아웃.

  • 가로 방향으로 배치하다가 더 이상 공간이 없으면 다음 줄로 이동해서 배치한다.

  • 기본적으로는 중앙 정렬이지만 변경 지정이 가능하다.


  • 생성자

    • setLayout (new FlowLayout())

    • setLayout (new FlowLayout(int align))

    • setLayout (new FlowLayout(FlowLayout.Right , 10, 20))



[실습 5-1]



4-2. BorderLayout

  • 컨테이너 상단, 하단, 좌측, 우측, 중앙에 Components 부착

    • “North”, “South”, “East”, “West”, “Center”
  • 프레임의 기본 레이아웃이다.

  • Center, North, South, Wset, East 5개의 영역으로 구분하여 컴포넌트를 배치한다.

    • 하나의 영역에 하나의 컴포넌트를 가득 채워서 출력한다.

    • 하나의 영역에 2개 이상의 컴포넌트를 배치하면 겹쳐서 배치된다.

  • 배치 시에는 add("위치", 컴포넌트)를 이용하여 배치한다.


  • 생성자

    • setLayout (new BorderLayout()): 컴퍼넌트간에 간격을 마련하지 않고, 새로운 보더 레이아웃을 구축합니다.

    • setLayout (new BorderLayout (int hgap, int vgap)) : 컴퍼넌트간에 간격을 지정해, 새로운 보더 레이아웃을 구축합니다.

      • setLayout (new BorderLayout (10, 20)) : horizontal spacing between each component is 10, and the vertical spacing is 20 pixels.

  • 필드

    • static String CENTER : center 레이아웃 제약 (컨테이너 속앙)입니다.

    • static String EAST : east 레이아웃 제약 (컨테이너의 우단)입니다.

    • static String SOUTH : south 레이아웃 제약 (컨테이너의 하단)입니다.

    • static String WEST : west 레이아웃 제약 (컨테이너의 좌단)입니다.

    • static String NORTH : north 레이아웃 제약 (컨테이너의 상단)입니다.

    • static String BEFORE_FIRST_LINE : PAGE_START와 같은 미를 가집니다.

    • static String BEFORE_LINE_BEGINS : LINE_START와 같은 미를 가집니다.

    • static String LINE_END : 컴퍼넌트는 레이아웃의 행방향의 마지막에 배치됩니다.

    • static String LINE_START : 컴퍼넌트는 레이아웃의 행방향의 선두에 배치됩니다.

    • static String PAGE_END : 컴퍼넌트는 레이아웃의 내용의 맨 마지막 줄의 뒤에 배치됩니다.

    • static String PAGE_START : 컴퍼넌트는 레이아웃의 내용의 선두행의 전에 배치됩니다.



[실습 6-1]




[실습 6-2]




4-3. GridLayout

  • 숫자 행과 열로 관리자를 만듭니다.

    • Matrix [rows : columns]
  • cell의 크기가 동일하다.

  • 셀이 만든 구성 요소를 채운다.

  • 테이블처럼 행과 열을 지정하여 격자 모양으로 배치한다.

  • 하나의 영역에 하나의 컴포넌트만 배치할 수 있다.

  • 모든 셀의 너비와 높이는 동일하게 적용한다.

  • 컴포넌트는 add(); 메소드를 이용하면 순서대로 자동 추가한다.

    • 행과 열의 수보다 컴포넌트의 수가 많으면 자동적으로 늘어난다.

  • 생성자

    • setLayout (new GridLayout ()): 1 행중에 컴퍼넌트 근처 1개의 열을 가지는 디폴트 지정으로 Grid 레이아웃을 작성합니다.

    • setLayout (new GridLayout (int rows, int cols)): 지정된 수의 행으로 열을 가지는 Grid 레이아웃을 작성합니다.

    • setLayout (new GridLayout (int rows, int cols, int hgap, int vgap)): 지정된 수의 행으로 열을 가지는 Grid 레이아웃을 작성합니다.



[실습 7-1]




[실습 7-2]




[실습 8] - simple Calculator UI



4-4. CardLayout

  • 일련의 카드로 인터페이스를 제공합니다.

  • 여러 개의 컴포넌트를 겹쳐놓은 후 하나씩 출력한다.


  • 생성자

    • setLayout(new CardLayout ()): 새로운 카드 레이아웃을 사이즈 제로의 간격으로 작성합니다.

    • setLayout(new CardLayout (int hgap, int vgap)): 지정된 수평 방향 및 수직 방향의 간격을 사용해 새로운 카드 레이아웃을 작성합니다.


  • 사용 순서

    1) CardLayout card = new CardLayout();

    2) setLayout (card);

    3) Panel p1 = new Panel()

    4) add(“First”, p1);

    5) card.show (this, “First”);

    • show(Container parent, String name);



[실습 9]





4-5. GridBagLayout

  • GridLayout을 기반으로하는 복잡한 레이아웃이다.

  • 둘 이상의 셀에 걸쳐 확장 할 수있는 single component를 제공합니다.

  • 하나의 Components가 둘 이상의 Grid 셀을 수평 또는 수직으로 사용할 수 있습니다.

  • GridBagLayout 클래스는 다른 크기의 컴퍼넌트에서도 종횡에 배치할 수 있는 유연한 레이아웃 매니저입니다.

  • 각각의 GridBagLayout객체는 셀에 의해 구성되는 동적인 구형 Grid를 포함하고 있습니다.

  • 각 컴퍼넌트는 1개 이상의 셀 ( 「표시 영역」이라고 부른다)에 배치됩니다.


  • 생성자

    • setLayout(new GridBagLayout ())

  • 사용 순서

    1) GridBagLayout gridbag = new GridBagLayout

    2) GridBagConstraint constraint = new GridBagConstraint

    3) setLayout gridbag

    4)constraint.weightx = 1.0, constraint.gridheight = 1.0, constraint.gridwidth = 1.0

    • defining the constraint for weightx , wighty , height, width

    5) Gridbag.setConstraints (cell, constraint)

    • setting the constraint to cell

    6) add(cell);

    • add component to container



➕ GridBagConstraint

  • GridBagConstraints 클래스는 GridBagLayout 클래스를 사용해 배치되는 컴퍼넌트의 제약을 지정합니다.

  • 생성자

    • GridBagConstraints () : 모든 필드를 기정치로 설정해 GridBagConstraint 객체를 작성합니다.

    • GridBagConstraints (int gridx, int gridy, int gridwidth, int gridheight, double weightx, double weighty, int anchor, int fill, Insets insets, int ipadx, int ipady) : 모든 필드에게 건네진 인수를 설정해, GridBagConstraints 객체를 작성합니다.


  • 필드

    • int anchor: 이 필드는 컴퍼넌트가 그 표시 영역보다 작은 경우에 사용됩니다.

    • static int BOTH: 컴퍼넌트를 수평과 수직의 어느 쪽에도 사이즈 변경합니다.

    • static int CENTER: 컴퍼넌트를 그 표시 영역의 중앙에 배치합니다.

    • static int EAST: 컴퍼넌트를 그 표시 영역의 우단의 상하 중앙에 배치합니다.

    • int fill : 컴퍼넌트의 표시 영역이 컴퍼넌트의 필수 사이즈보다 클 때에 사용됩니다.

    • static int REMAINDER : 컴퍼넌트가 열 또는 행의 마지막 컴퍼넌트가 되도록 지정합니다.

    • int gridheight: 컴퍼넌트의 표시 영역의 1 열의 셀수를 지정

    • int gridwidth: 컴퍼넌트의 표시 영역의 1 행의 셀수를 지정

    • double weightx: 여분의 수평 스페이스를 분배하는 방법을 지정합니다.

    • double weighty: 수직의 여분의 스페이스를 분배하는 방법을 지정합니다.


    추가 필드



[실습 10]





[HomeWork]






5. Menu

  • Java는 풀다운(pull-down) 메뉴와 팝업(pop-up) 메뉴의 두 가지 메뉴를 지원합니다.

    • 여기서는 풀다운 메뉴를 다룬다.
  • Menu 객체는 도구 모음으로부터 전개되는 풀다운 메뉴 컴퍼넌트이다.

  • Menu 내의 각 항목은, MenuItem 클래스에 속하고 있을 필요가 있습니다.

    • 각 항목은, MenuItem 인스턴스, 부메뉴 (Menu 인스턴스), 또는 체크 박스 (CheckboxMenuItem 인스턴스)

  • 사용 순서

    1) MenuBar 객체를 만들고 메뉴 바를 Frame 객체와 같은 메뉴 컨테이너로 설정합니다.

    2) 하나 이상의 Menu 객체를 만들고 이러한 메뉴 객체를 MenuBar 객체에 추가합니다.

    3) 하나 이상의 MenuItem 객체를 만들고 이러한 메뉴 항목을 메뉴 객체에 추가합니다.

  1. MenuBar : 메뉴 표시줄을 만들 때 사용

    • new MenuBar();
  2. Menu : 메튜 표시줄에 보이는 메뉴

    • new Menu(메뉴명);
  3. MenuItem : 메뉴에 포함될 세부 메뉴를 만들 때 사용

    • new MenuItem(“세부 메뉴 명);
  4. CheckboxMenuItem : 체크 박스가 있는 메뉴



[실습 11]




6. Dialog

  • 약간의 장식이 있는 독립 창(freestanding window)이라는 점에서 Frame과 유사하다.

  • 일반적으로 버튼 클릭과 같은 다른 사용자 인터페이스 작업에 대한 응답으로 팝업됩니다.

  • 메시지를 출력하거나 보조적인 입력을 받기 위한 컨테이너다. main 윈도우 외에 메시지를 출력하거나 사용자로부터 자료를 입력 받을 때 사용한다.


  • Modal Dialog : 화면에 출력된 상태에서 다른 윈도우로 제어권이 이동되지 않는 대화상자다. 메뉴에서 New나 Open메뉴를 선택할 때 보이는 대화상자로서 이 대화 상자의 작업을 수행해야 다른 작업을 할 수 있다.


  • Modeless Dialog : 화면에 출력된 상태에서도 다른 윈도우로 제어권이 이동될 수 있는 대화상자다. 메뉴에서 Find(찾기)를 선택했을 때 출력되는 대화상자.

  • 생성자

대화상자의 생성자는 자신의 부모가 되는 윈도우를 매개변수로 받아야 한다.

  • Dialog (Dialog owner) : 소유하는 Dialog가 owner인 Modeless Dialog를 생성한다.

  • Dialog (Dialog owner, String title) : 타이틀을 가진 Modeless Dialog를 생성한다.

  • Dialog (Dialog owner, String title, Boolean modal) : modal이 true이면 modal 다이얼 로그를, false면 modeless 다이얼로그를 생성한다.

  • Dialog (Frame owner) : owner 프레임이 소유하는 Modeless 다이얼로그를 생성한다.



[실습 12]



7. FileDialog

  • 파일을 읽고 쓸 수 있는 파일 선택 대화 상자(file selection dialog) 인터페이스를 제공합니다.

  • 이 다이얼로그는 모덜이기 때문에 어플리케이션이 그 show 메서드를 호출해 이 다이얼로그를 표시하면, 사용자가 파일을 선택할 때까지 어플리케이션외의 부분은 사용할 수 없습니다.


  • 생성자

  • FileDialog (Dialog parent): 파일을 로드하기 위한 파일 다이얼로그를 생성합니다.

  • FileDialog (Dialog parent, String title): 지정된 타이틀을 사용해, 파일을 로드하기 위한 파일 다이얼로그 윈도우를 생성합니다.

  • FileDialog (Frame parent): 파일을 로드하기 위한 파일 다이얼로그를 생성합니다.

  • FileDialog (Frame parent, String title): 지정된 타이틀을 사용해, 파일을 로드하기 위한 파일 다이얼로그 윈도우를 생성합니다.



[실습 13]




참고: 참고1, 참고2, 참고3, 참고4 , 참고5, 참고6

profile
For the sake of someone who studies computer science

0개의 댓글