java 11

[Swing] KeyEvent / KeyListener

1. KeyEvent 와 Focus / 키 이벤트와 포커스 - 모든 컴포넌트는 Key이벤트를 받을 수 있다. - 여러 컴포넌트가 동시에 Key입력을 받으면 혼잡해지고, 화면을 제어하기가 힘들어진다. (일반적으로 우리가 사용하고 있는 모든 것을 보아라...) > 여기서 나온것이 Focus!! Key입력은 Focus를 받고 있는 것만이 가능하다. - 즉, Focus를 받는것이 Key이벤트를 독점한다!! 2. Focus 주기 - 강제로 임의의 컴포넌트에 포커스를 주는 방법 > component.requsetFocus(); // component 컴포넌트에 포커스를 강제로 줌... - 컴포넌트가 포커스를 받을수 있는 상태로 대기 > component.setFoucsable(true); // component 포..

[Swing] 어댑터 클래스(Adapter Class)

- 리스너 인터페이스를 사용하여 이벤트 리스너를 구현할 시 인터페이스가 제공하는 모든 메소드를 구현해야하는 부담을 줄여주기 위해 생긴 클래스 - 인터페이스의 모든 메소드가 단순 리턴하게 구현 되있는 클래스 - 메소드가 1개인 리스너 인터페이스는 제공해 주지 않는다. ( Action. Item. Text. Adjustment ) ex) class KeyAdapter implements KeyListener{ public void KeyPressed(keyEvent e){} public void KeyReleased(keyEvent e){} public void KeyType(keyEvent e){} } 위는 어뎁터 클래스중 하나의 클래스로 KeyListener의 어댑터 클래스이다. 이번엔 어뎁터 클래스를 ..

[Swing] 이벤트 리스너의 구현

다음의 Test소스를 이용하여 리스너 구현에 대해서 설명하겠다. 기존과 다른 부분을 강조 하였고, 그 부분을 위주로 설명을 해나갈 것이다. ------------------------------------------------------------------------------------------------------ import javax.swing.*; import java.awt.event.*; import java.awt.*; public class ListenerTest extends JFrame{ ListenerTest(){ setTitle("listener Test"); setSize(400,300); setLayout(new FlowLayout()); setDefaultCloseOper..

[Swing] 이벤트

* 이벤트 - 프로그램 외적인 요소로서 프로그램진행에 영향을 주는 행위 * 이벤트의 발생 - 이벤트는 키/마우스 등의 사용자의 행동 또는 외부장치로부터의 입력, 데이터/메세지 수신등으로 발생 * 이벤트 기반 프로그램 - 이벤트 발생에 따라 프로그램 실행흐름이 결정되는 프로그램 * 이벤트 관련 용어 정리 - 이벤트 소스 : 이벤트를 발생시킨 GUI컴포넌트 - 이벤트 객체 : 이벤트에 대한 속성값을 가진 객체 - 이벤트 리스너 : 이벤트를 처리하는 코드 / 컴포넌트에 등록되어야 한다. - 이벤트 분배 스레드 : 이벤트 발생에 의해 어떤 리스너를 실행할지 정해주는 스레드 * 이벤트 기반 프로그램 실행 경로 ※ 자바의 이벤트는 이벤트 분배 스레드에 의해 도착하는 순서대로, 단 한개씩만 처리됨 > 프로그램 지연 ..

[Swing] 배치관리자의 삭제

* 배치관리자를 없에야 하는 경우 - 컴포넌트를 상대적인 위치가 아닌 절대적 위치에 위치할 때 - 컴포넌트의 크기를 절대적인 크기를 가지고 싶게 할때 - 입력에 따라 수시로 컴포넌트의 위치와 크기가 변하는 경우 > 위치와 크기 고정 - 여러 컴포넌트를 겹치는 효과를 연출할 때 * 컨테이너의 배치관리자 제거 - container.setLayout(null); * 절대적 위치와 크기를 가지는 컴포넌트 - java.awt.Component 클래스 이용 - method ⓐ void setSize(int w,int h); // w*h의 크기를 가지는 컴포넌트 생성 ⓑ void setLocation(int x, int y); // 컴포넌트의 왼쪽상단 모서리 좌표를 (x,y)로 설정 ⓒ void setBounds(i..

[Swing] GridLayout

* GridLayout - Grid : 격자 - 컨테이너 공간을 지정한 개수의 사격형의 격자모양으로 분할하여 좌에서 우로/위에서 아래로 컴포넌트를 배치하는 관리자 ※ 분할된 공간보다 컴포넌트가 적거나 많을 경우 배치관리자가 알아서 배치해준다. (먼가 무책임한 말 같지만-; 여러가지 돌려봤는데 어떤규칙으로 자동으로 분활되는지 이해가 100%되지 않아서) * 생성자 - GridLayout(int rows, int cols, int hGap, int vGap) > 컨테이너를 가로 rows, 세로 cols로 나누고, 각 격자의 수평간격을 hGap, 수직간격을 vGap으로 하는 GridLayout 생성 - GridLayout(int rows, int cols) > 컨테이너를 가로 rows, 세로 cols로 나누고..

[Swing] BorderLayout

* BorderLayout - Border의 의미 : 가장자리, 끝, 인근 - 컨테이너의 공간을 동, 남, 서, 북, 중앙 5개 영역으로 분할 하여 배치 ※ 배치시 다른 영역을 모두 차지하는 것이 아니라 다른영역을 남겨둔다. CENTER영역 제외!! - BorderLayout은 기본적으로 5개의 컴포넌트만을 붙일수 있지만, JPanel등 다른 컨테이너를 이용하여 최대 부착 컴포넌트를 늘릴수 있다.* 컨테이너에 컴포넌트 추가 - add(컴포넌트 C, int Phase) 메소드를 이용할시 위치를 정해줘야한다. > C : 컨테이너에 삽입되는 컴포넌트 / Phase : 컴포넌트가 들어갈 위치 > Phase 값 ⓐ 동 : BorderLayout.EAST ⓑ 남 : BorderLayout.SOUTH ⓒ 서 : Bo..

[Swing] FlowLayout

* 특징 - 컨테이너에 좌에서 우 / 위에서 아래로 배치를 함 - 배치관리자를 FlowLayout으로 설정한 뒤 add매소드를 이용하여 추가 - FrameSize 변경에 따라 자동으로 배치 위치가 바뀜 * 생성자와 속성 - 생성자 : FlowLayout(int align, int hGap, int Vgap) - 속성 ⓐ aling : 컴포넌트를 정렬하는 방법 지정 중앙 : FlowLayout.CENTER // 디폴트 왼쪽 : FlowLayout.LEFT 오른 : FlowLayout.RIGHT ⓑ hGap : 컴포넌트 간의 수평 간격 (픽샐단위/디폴트 5) ⓒ vGap : 컴포넌트 간의 수직 간격 (픽샐단위/디폴트 5) * 호출모양 - FlowLayout() > 모든 것이 디폴트인 관리자 생성 - Flow..

[Swing] 배치관리자특징과 종류

* 배치관리자 - 컨테이너에 부착되는 컴포넌트들의 위치와 크기 결정 - 컨터이너에 속한 것으로 컨테이너마다 하나씩 존재 / 하나의 컨터이너에는 반드시 하나의 배치 관리자를 가짐. - 컴포넌트가 컨테이너로 들어오는 순간에 위치와 크기를 결정 - 컨테이너의 크기가 변경되면 컨테이너 내부의 모든 컴포넌트들의 위치와 크기를 재조정 - java.awt 패키지에 존재 * 배치관리자 종류 ⓐ FlowLayout - 컨테이너에 컴포넌트가 들어오면 순서대로 왼쪽에서 오른쪽 / 위에서 아래 방향으로 배치 ⓑ BorderLayout - 컨테이너를 동/남/서/북/중앙 5개의 영역으로 나눈 후 지정된 영역에 컴포넌트를 배치 - 컴포넌트 추가시 반드시 5개 영역중 하나를 지정해야 한다. ⓒ GridLayout - 설정한 동일의 ..

[Swing] GUI 프로그램 만들기...

* 스윙 프레임(JFrame) - 모든 스윙 컴포넌트를 답는 최상위 컨테이너 - 프래임이 있어야 GUI가 화면상 출력이 된다 ⓐ 프레임이 없이 독립적으로 화면에 출력되지 않는다. ⓑ 프레임이 닫히면 프레임 내의 모든 컴포넌트들도 사라진다. - JFrame은 Frame/MenuBar/ContentPane으로 구성 ⓐ MenuBar : 메뉴를 부착할 수 있게 하는 Bar ⓑ ContentPane : 메뉴를 제외한 모든 GUI를 부착하는 공간 - 프레임 메소드 ⓐ setTitle("String") > 프레임의 title을 String으로 지정 ⓑ setSize(num1,num2) > 프레임의 크기를 num1 x num2로 지정 ⓒ setVisble(value) > value로 true와 false를 가질수 있..