▶ Graphical User Interface (GUI) - 그래픽 사용자 인터페이스


- GUI 는 사용자와 상호작용하는 프로그램을 쉽게 작성할 수 있다.


현재 자바에서 사용되어지는 GUI 객체는 Abatract Windows Toolkit(AWT) 와 스윙(Swing)으로 두 가지가 있다.

  

- AWT -> java.awt.*;

1. 운영 체제가 제공하는 자원을 이용하여 컴포넌트를 생성한다

2. 다양한 플랫폼에서 쉽게 컴포넌트를 제공할 수 있다.

3. 컴포넌트가 플랫폼에 종속되므로 실행되는 플랫폼에 따라서 컴포넌트의 모습이 달라진다.

, 일관된 화면을 제공하는 것이 어렵다.

 

플랫폼은 소프트웨어 응용 프로그램들을 돌리는 데 쓰이는 하드웨어와 소프트웨어의 결합이다. 플랫폼은 하나의 운영 체제 또는 컴퓨터 아키텍처라고 단순히 말할 수 있으며 그 두 가지를 통칭해서 말할 수도 있다일반적으로 플랫폼은 컴퓨터의 아키텍처, 운영 체제(OS), 프로그램 언어, 그리고 관련 런타임 라이브러리 또는 GUI를 포함한다. - [출처] 위키백과

 

- Swing -> javax.swing.*; / javax.swing.event*;

1. 컴포넌트가 자바로 작성되어 있기 때문에 플랫폼에 상관없이 일관된 화면을 보여준다.

2. 스윙은 AWT에서 없는 다양한 컴포넌트들을 제공한다. (현재는 스윙의 사용이 권장되고 있다.)

3. 스윙은 AWT를 대체하기 위하여 AWT의 컴포넌트 이름 앞에 J를 붙인 JButton, JLabel 등으로 나타내고, 동일한 기능을 제공한다.

4. 다양한 룩앤필(Look and feel)을 선택할 수 있다. 룩앤필이란 각 운영 체제가 제공하는 GUI의 모습을 뜻한다. 룩앤필에 따라서 외관이 조금씩 달라진다.




▶ Swing의 기본 구조

 


1. Component(컴포넌트) : 레이블, 버튼, 텍스트 필드와 같은 GUI를 작성하는 기본 빌딩 블록을 의미한다. 윈도우 시스템(ex- javaFX)에서는 컨트롤(control)이라고 한다. 컴포넌트 클래스는 화면에 표시되어서 사용자와 상호 작용하는 시각적인 객체를 나타낸다. 이 클래스는 모든 스윙 클래스들이 가지고 있는 공통적인 기본 메소드를 정의한다.

 

- 기본 컴포넌트 : JButton, JLabel, JCheckBox, JList, JMenu, JTextField, JTextArea

- 컨테이너 컴포넌트 : JFrame, JDialog, JApplet, JPanel, JScrollPane

 

2. Container(컨테이너) : 다른 컴포넌트들을 내부에 놓을 수 있는 컴포넌트


- 최상위 컨테이너 : 다른 컨테이너 안에 포함될 수 없는 컨테이너

ex) JFrame, JDialog, JApplet

* JFrame : 윈도우와 메뉴를 가지는 일반적인 데스크탑 애플리케이션에 적합하다.

* JDialog : 메뉴가 없는 대화 상자 형식의 간단한 애플리케이션에 사용된다.

* JApplet : 애플릿을 작성하는데 사용된다.

 

- 일반 컨테이너 : 다른 컨테이너 안에 포함될 수 있는 컨테이너

ex) JPanel, JScrollPane




▶ 프레임(Frame)


컴포넌트를 추가할 수 있는 윈도우


생성자

설명 

 JFrame()

 타이틀이 없는 새로운 프레임을 생성

 JFrame(String title)

 매개변수로 받은 문자열을 타이틀로 하여 새로운 프레임을 생성


- JFrame은 "pane"이라는 것들로 분리되어지는데, 이들은 서로가 최상위에 위치해있다. Pane의 종류로는 Root Pane, Layered Pane, Content Pane, Glass Pane이 있고, 각 Pane은 다른 기능을 수행한다. 주로 컴포넌트가 추가되는 pane은 ContentPane이고 여기서는 ContentPane에 대해서만 다룬다.



- Content Pane에는 직접적으로 접근할 수 있는데, 그 방법으로 JPanel을 이용하는 것이다. 프레임의 ContentPane에 생성한 JPanel을 추가할 경우 보다 쉽게 프레임 속의 모든 것들을 다루게 된다.


프레임의 속성 변경 : 프레임도 객체이므로 속성을 변경하려면 set으로 시작하는 설정자 메소드를 사용하여야 한다

(반환형은 모두 void 이다.)


 설정자 메소드

 설명

setLocation(int x, int y)

(컴포넌트도 사용가능)

 모니터에서 프레임(or 컴포넌트)의 위치 설정

setSize(int width, int height)

(컴포넌트도 사용가능)

 프레임(or 컴포넌트)의 크기 설정

setBounds(int x, int y, int w, int h)

(컴포넌트도 사용가능)

 프레임(or 컴포넌트)의 위치와 크기 설정

 setIconImage(ImageIcon icon)

 윈도우 시스템에 타이틀 바태스크 스위처에 표시할 아이콘을 설정

setTitle(String title) 

 타이틀 바의 제목을 설정한다.

setResizable(boolean resizable) 

 사용자가 프레임의 크기를 조절할 수 있는 지 설정한다.

 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

 사용자가 프로그램 닫기를 눌렀을 때 프로그램이 완전히 종료되는

 지의 여부를 설정하며, 기본값은 닫기를 눌러도 프로그램이 종료되

 지 않도록  되어 있다.

setLayout(LayoutManager manager)

(패널도 사용가능)

 레이아웃을 설정하는 메소드로 매개변수는 컴포넌트들을 배치하

 는 배치관리자이다. 디폴트 값은 BorderLayout 이고, 컴포넌트

 위치를 변경하고 싶다면 LayoutManager null로 설정해야 한다.

setVisible(boolean visible)

(컴포넌트도 사용가능)

 프레임(or 컴포넌트)이 눈에 보이게 하는지 설정하는 메소드이다. 

 기본값이 false 이므 true로 설정해야 프레임을 볼 수 있다

 설정안하면 안보인다.

setLocationRelativeTo(Component component) 

 매개변수로 지정받은 컴포넌트 위치에 따라 상대적으로 프레임의

 위치가 결정된다. 그러나 매개변수로 null을 전달할 경우 모니터 

 화면의 중앙을 기준으로 프레임이 배치된다.

 setMenuBar(JMenuBar menubar)

 현재 프레임에 메뉴바를 붙인다.

 setContentPane(JPanel panel)

 컨테이너에 패널을 추가




▶ 패널(Panel)


- 컴포넌트들을 포함하고 있도록 설계된 컨테이너이다. 패널에 컴포넌트들을 추가하고 해당 패널을 프레임에 추가하는 것이 일반적으로 컴포넌트들을 화면에 표시하는 방법이다. 패널을 프레임에 추가하지 않고 프레임에 컴포넌트들을 직접 추가하는 것도 가능하다. 그러나 별도의 패널을 쓰는 것이 유지 보수 및 배치 관리에 좋은 경우가 많다. 쉽게 말해 패널은 스윙의 "위젯"을 성립시키기 위해 이용되어진다.

 

 생성자

 설명

 JPanel()

 새로운 패널 생성

 JPanel(boolean isDoubleBuffered)

 매개변수가 참일 경우 더블 버퍼링을 사용

 JPanel(LayoutManager layouy)

 매개변수로 지정된 배치 관리자를 사용하는 패널 형성


 메소드

 설명

void setLayout(LayoutManager layout)

 설명은 위와 같고, 디폴트는 FlowLayout 이다.

 void setToolTipText(String text)

 사용자가 마우스를 패널(or 컴포넌트)의 빈 곳에 올려놓으면 툴팁을 표시한다.




▶ 그 외 프레임 또는 패널에서 자주 쓰이는 메소드


 메소드

 설명

 void add(Component c)

 지정된 컴포넌트를 추가한다.

void remove(Component c)

 지정된 컴포넌트를 제거한다.

void pack()

 프레임 크기를 추가된 컴포넌트들의 크기에 맞도록 조절한다.




 레이블(Label) 


편집이 불가능한 텍스트를 표시하기 위한 컴포넌트


JLabel

 생성자

 JLabel()

 비어있는 새로운 레이블을 생성한다.

 JLabel(String text)

 매개변수로 받은 텍스트를 표시하는 레이블을 생성한다.

 JLabel(Icon icon)

 매개변수로 받은 아이콘을 표시하는 레이블을 생성한다. 

 주로 ImageIcon을 사용하여 레이블의 이미지를 생성한다.

 메소드

 void setText(String text)

 레이블의 텍스트를 설정한다.

 String getText()

 레이블의 텍스트를 반환한다.

void setIcon(Icon icon)

 레이블의 아이콘을 설정한다. 

  Icon getIcon()

 레이블의 아이콘을 반환한다. 




 버튼(Button)


- 사용자가 클릭했을 때, 이벤트를 발생하여 원하는 행위를 하게 하는 데 이용된다.

 

JButton

 생성자

 JButton()

 레이블이 없는 버튼을 생성한다.

JButton(String label)

 매개변수로 받은 텍스트가 표시되는 버튼을 생성한다.

 JButton(Icon icon)

 매개변수로 받은 아이콘이 표시되는 버튼을 생성한다. 

 주로 ImageIcon을 사용하여 버튼 이미지를 생성한다.

 메소드

 void setText(String text)

 버튼의 텍스트를 설정한다.

 String getText()

 버튼의 텍스트를 반환한다.

void setIcon(Icon icon)

 버튼의 아이콘을 설정한다. 

  Icon getIcon()

 버튼의 아이콘을 반환한다. 

 void doClick()

 사용자가 버튼을 누른 것처럼 이벤트를 발생한다.

void setBorderPainted(boolean value)

 버튼의 경계를 나타내거나 감춘다.

void setContentAreaFilled(boolean value)

 버튼의 배경을 채울 것인지를 설정한다.

 void setEnabled(boolean value)

 버튼을 활성화하거나 비활성화한다.

 void setRollOverEnabled(boolean value)

 마우스가 버튼 위에 있으면 경계를 진하게 하는 롤오버 효과를 

 설정한다.




 텍스트 필드(TextField) 


- 입력이 가능한 한줄의 텍스트 필드를 만드는데 사용된다.

 

JTextField

 생성자

JTextField()

 비어있는 새로운 텍스트 필드를 생성한다.

 JTextField(int num)

 매개변수로 지정된 글자 수를 가지고 있는 텍스트 필드를 생성한다.

 JTextField(String text)

 지정된 문자열로 초기화된 텍스트 필드 생성

 메소드

 void setText(String text)

 텍스트 필드의 문자열을 설정한다.

 String getText()

 텍스트 필드에 입력된 문자열을 반환한다.

void setEditable(boolean value)

 사용자가 텍스트 필드를 수정할지의 여부를 설정한다.

  boolean isEditable()

 사용자가 텍스트 필드를 수정할 수 있으면 true, 없으면 false를 반환한다.





+ Recent posts