[Java] 2020.11.26. day_25 Window Component, Key Event(KeyListener, KeyAdapter)
2020. 11. 26. 17:10ㆍWeb_Back-end/Java SE
◎ Window Compoent의 종류
○ FileDialog
- | FileDialog |
- | java.awt 패키지에서 제공하는 Window Component |
파일을 선택할 때 사용 | |
Window OS에서 제공하는 Dialog를 사용 | |
반드시 부모창 (Window, Frame, Dialog)이 필요하다 | |
사용법 | |
1. 생성 | FileDialog fd = new FileDialog( Frame, "Title Bar 에 들어갈 문자열", mode ); |
mode : | 열기 (FileDialog.LOAD), 저장 (FileDialog.SAVE) |
2. 사용자에게 보여주기 | fd.setVisible(true); |
3. 사용자가 선택한 폴더얻기 | String directory = fd.getDirectory(); |
4. 선택한 파일명얻기 | String file = fd.getFile(); |
○ JDialog
- | JDialog |
- | Window Component |
Window(Frame)에서 제공하는 부가적인 정보를 제공할 때 사용 | |
JDialog의 Layout은 BorderLayout | |
상속하지 않고 생성하는 방법 (배치되는 컴포넌트 수가 적을 때) | |
1. 생성 | JDialog jd = new JDialog( 부모창, "Title Bar 에 들어갈 문자열", modal여부 ); |
modal : | 자식창이 동작했을 때 부모창이 선택되지 못하는 것 |
비 modal : | 자식창이 동작했을 때 부모창이 선택되는 것 |
2. Dialog에 배치될 컴포넌트 생성 | JButton jb = new JButton("버튼"); |
3. Dialog에 배치 | jd.add("Center", jb); |
4. Dialog의 크기 설정 | jd.setSize(); |
5. Dialog 를 사용자에게 보여주기 | jd.setVisible(); |
6. Dialog 종료처리 | jd.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); //EXIT_ON_CLOSE > Error |
JDialog를 상속하여 생성하는 방법 (배치되는 컴포넌트의 수가 많을 때) | |
- | JPanel을 상속받을 수 있다 |
1. JDialog 상속 | public class Test extends JDialog{ |
2. 부모창과 has a 관계 설정하는 생성자 작성 |
부모창 : JFrame을 상속받고 있는 클래스 public Test( ParentWindow pw ){ super( pw, "다이얼로그 타이틀", true ); |
3. Dialog에 배치될 컴포넌트 생성 | JButton jbtn = new JButton("버튼"); |
4. 배치 | add( "Center", jbtn ); |
5. Dialog의 크기 설정 | setSize( W, H ); |
6. Dialog 를 사용자에게 보여주기 | setVisible(true); |
7. 종료처리 | setDefaultCloseOperation( JFrame.DISPOSE_ON_CLOSE ); |
○ Key Event
Key Event | |
- | 키보드의 키가 눌렸을 때 동작하는 이벤트 |
TextComponent인 TextField, JTextField, JPasswordField, JTextArea에서 사용할 수 있다 | |
사용법 | |
1. KeyListener 를 구현 | KeyAdapter를 상속 |
public class Test extends JFrame implements KeyListener{ | |
2. 컴포넌트 선언 | JTextField jft; |
3. 생성자 작성 | public Test(){ super("KeyListener사용"); |
4. abstract method Override | public void keyPressed( KeyEvent ke ){ //1. 키가 눌려지는 순간에 처리해야할 일 } |
public void keyTyped( KeyEvent ke ){ //2. 키가 눌려서 문자가 입력되는 순간에 해야할 일 } |
|
public void keyReleased( KeyEvent ke ){ //3. 눌린 키가 올라오는 순간에 해야할 일 } |
|
5. 텍스트 컴포넌트를 이벤트에 등록 |
jtf.addKeyListener(이벤트를 처리할 객체); jtf.addKeyListener(this); |
KeyEvent로 눌린키의 키코드와 키의 문자를 얻을 수 있다 | |
키코드 : | keyCode는 ASCII Code가 아니고 키보드의 키를 식별하기 위한 고유값 |
keyTyped()에서는 keyCode 얻어지지 않는다 | |
ASCII Code는 소문자와 대문자를 식별하기 위해 다른코드 값을 가진다 // a:97, A:65 |
|
keyCode는 a라면 대소문자를 가리지 않고 동일한 값을 가진다 | |
ke.getKeyCode() | |
키의 문자 : | ke.getKeyChar() |