'C'에 해당되는 글 116건

  1. 2008.01.03 ActionListener 인터페이스 by 청웨일
  2. 2007.12.18 다른 이벤트 리스너 인터페이스 by 청웨일
  3. 2007.12.13 이벤트 모델 프로그래밍 by 청웨일
  4. 2007.12.01 AWT>레이아웃 관리자 by 청웨일
  5. 2007.11.13 AWT>Menu Components>MenuItem by 청웨일
- 메소드 : actionPerformed()
              java.awt.ActionEvent객체를 전달받는다.
                               이벤트 발생후 처리방법
                                   1) getActionCommand() : 발생과 관련있는 이름 반환
                                   2) getModifiers() : 액션이벤트발생시 Shift,Ctrl이 눌렸는지 알린다.
                                   3) paramString() : 발생한 이벤트와 관련있는 정보를 문자열로 반환

* 한개의 메소드만 있기 때문에 어댑터클래스가 필요없다.

구현 예)

http://cotoba.tistory.com/115







Posted by 청웨일
고급레벨 이벤트

ActionEvent : 버튼이 클릭되거나 아이템을 선택한 경우
 이벤트 리스너 : ActionListener
AdjustmentEvent : 스크롤바를 조정한 경우
 이벤트 리스너 : AdjustmentListener
ItemEvent : 리스트 객체로부터 항목을 선택한 경우
 이벤트 리스너 : ItemListener
TextEvent : 텍스트 필드의 값이 변경된 경우
 이벤트 리스너 : TextListener



저급레벨 이벤트

ComponentEvent : 컴포넌트 크기를 변경, 이동, 보이기, 숨기기한 경우
 이벤트 리스너 : ComponentListener
KeyEvent : 키를 누르거나 띈 경우
 이벤트 리스너 : KeyListener
MouseEvent : 마우스버튼이 눌리거나 띈 경우, 마우스를 움직이거나 드래그한 경우
 이벤트 리스너 : MouseListener, MouseMotionListener
     마우스가 x,y 좌표에서 움직이면서 키보드와 같이 작동하는 버튼을 가지고 있기 때문에.
FocusEvent : 컴포넌트의 포커스를 얻거나 잃은 경우
 이벤트 리스너 : FocusListener
WindowEvent : 화면이 아이콘화 되거나 활성화, 비활성화, 기타 등등의 경우
 이벤트 리스너 : WindowListener
ContainerEvent : 컴포넌트가 컨테이너에 추가되거나 제거된 경우
 이벤트 리스너 : ContainerListener
PaintEvent : 리스너를 가지고 사용되지 않고 재정의될 수 있는 메소드를 포함
 이벤트 리스너 : PaintListener
InputEvent : 주로 Component 이벤트가 던져지지 않는 컴포넌트를 얻기 전에 이벤트를 가로채도록 사용
 이벤트 리스너 : InputListener



인터페이스들은 많게는 7개에서 1개의 메소드와 관련이 있다.
여러개의 메소드를 갖고있는 리스너는 어댑터 클래스라는 특별한 클래스를 갖는다.
사용자를 위해 인터페이스를 구현하고 더미 메소드를 지공한다.
->인터페이스를 구형하기 위해 이 클래스들을 확장하고 메소드를 재정의 한다.
모든 메소드를 구현하지 않아도 어댑터 클래스가 이미 구현해 놓았기 때문에 에러는 발생하지 않는다.


어댑터 클래스

ComponentAdapter
ContainerAdater
FocusAdapter
KeyAdapter
MouseAdapter
MouseMotionAdapter
WindowAdapter




Posted by 청웨일
이벤트 리스너(EventListener) - java.awt.event.EventListener 인터페이스 구현

서브인터페이스
ActionListener
AdjustmentListener
ChangeListener
ComponentListener
ConnectionEventListener
ContainerListener
ControllerEventListener
FocusListener
ItemListener
KeyListener
LineListener
ListDataListener
ListSelectionListener
MenuListener
MouseInputListener
MouseListener
MouseMotionListener
MouseWheelListener
WindowStateListener


- 모든 메소드는 java.awt.Event 로부터 전달된 객체를 받는다.

- JVM은 전달받은 하드웨어 이벤트로부터 Event객체를 생성한다.
- 전달받은 이벤트를 해석하고 프로그래머가 쉽게 다룰수 있도록하기위해 객체로 변환한다.



▼ 컴포넌트가 발생시킬 수 있는 이벤트와 해당 이벤트를 처리하는 이벤트 행들링 코드를 결합하기 위해 필요한 기본 절차를 보여준다.



이벤트리스닝을 변경하는 방법
- 그 자신이 이벤트 리스너인 단일 클래스를 만든다.
- 스스로 리스너 인터페이스를 구현하는 클래스를 만든다.
- 그 자신이 이벤트 처리 클래스라는 표시로 this매개변수를 전달하여 addActionListener()를 호출한다.

- 이벤트의 발생과 처리가 한 클래스 안에서 이루어진다.



 

Posted by 청웨일

AWT>레이아웃 관리자

C/Java : 2007. 12. 1. 11:31

- 자바는 컴포넌트 크기와 레이아웃을 만들기 위해 프로그래머가 메소드를 호출하는 것 대신에 레이아웃 관리자를 제공한다.

- 레이아웃 관리자는 각 객체가 화면에 출력될 위치에 관여할수 있지만 정확한 좌표를 지정할수는 없다.
└ 브라우저에 기반한 GUI를 구성하기 때문에
└ GUI가 인터넷으로 전송되고 브라우저에서 실행된다면
    화면 해상도, 크기 또는 그것을 실행할 브라우저의 종류에 구애받지 않는다.
└ 메소드 호출과 switch문으로 처리하기 어려우므로 간단하게 하기 위해
    (자바 디자이너들은) 레이아웃관리자를 제공하여
    (관리자 하나, 혹은 조합으로) 사용자가 원하는 모양을 만들수 있도록 지원한다.

- java.awt패키지에 의해 제공되는 레이아웃 관리자는 스윙에서도 사용할 수 있다.
└ 스윙 애플리케이션은 모든 레이아웃 관리자를 사용할 수 있다.



1. BorderLayout

Panel객체를 생성하고 거기에 GUI객체를 추가한다.
레이아웃 방법에 따라 일정한 영역에 패널을 위치시킨다.
패널은 한 개의 영역에서 시작하여 다른 영역에서 끝나도록 다른 색으로 지정할 수 있다.
BorderLayout클래스는 각 영역의 크기를 자체적으로 정한다.
사용자는 간접적인 영향만 미친다.


2. FlowLayout

- 레이아웃 관리자중 가장 간단하다.
- 컴포넌트가 프레임에 놓일때 왼쪽을 기준으로 위치한다.
- 컴포넌트는 계속 이어지면서 위치하게 되고 해당 행에 출력되지 못하면 새로운 행을 만들어 출력한다.


3. GridBagLayout

- 가장 강력하지만 레이아웃 관리자를 구현하는데 가장 복잡하다.
- 다른 행과 열에 항목을 위치시키는 스프레드시트 프로그램처럼 동작하고
   또 다르게 셀의 크기를 다르게 지정할수 있다.
- 레이아웃 관리자의 복잡함을 처리하기 위한 클래스 GridBagConstraints를 호출한다.
└ 프로그래머가 좌표, 범위, 스페이싱, 패딩을 지정할수 있게 해준다.

- 프레임에 놓인 모든 객체는 강제적으로 지정할 필요가 있다.

gridx : 열 위치
gridy : 행 위치
gridwidth : 셀 폭
gridheigth : 셀 높이
weightx : 여분 행 공간 할당
weighty : 여분 열 공간 할당
anchor : 셀에 컴포넌트를 정렬하는 방법 지정
fill : 컴포넌트를 채우는 방법 지정
insets : 컴포넌트와 셀의 가장자리 사이의 여백 지정
ipadx : x 방향의 여백 지정
ipady : y 방향의 여백 지정

  gbc = new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0,
                                            GridBagConstraints.EAST,
                                            GridBagConstraints.NONE,
                                            i, 0, 0);

  gbl.setConstraints(answerLabel, gbc);


- 이 클래스는 레이아웃을 보다 정밀하게 제어하여 셀에 객체를 위치시킬수 있다.

- 어떤 이유로 높은 행과 열 번호를 지정해도 결과에서 행, 열에 공백이 없다.
└ 만약 행, 열이 비어있다면 레이아웃 관리자에 의해 무시된다.


 

Posted by 청웨일

AWT>Menu Components>MenuItem

C/Java : 2007. 11. 13. 14:42

Menu에서 항목을 표현한다.
선택되면 이벤트를 발생시킨다.
enable()/disable() 메소드로 사용가능/불가능으로 지정가능하다.



import java.awt.*;
import java.awt.event.*;

public class TestMenuItems extends Frame implements ActionListener {
 MenuBar mBar;
 Menu breadMenu, toastMenu;
 Menu helpMenu;
 
 TextField tField;
 
 public TestMenuItems() {
  breadMenu = new Menu("Bread");
 
  MenuItem tempMenuItem;
 
  tempMenuItem = new MenuItem("White");
  tempMenuItem.addActionListener(this);
  breadMenu.add(tempMenuItem);
 
  tempMenuItem = new MenuItem("Wheat");
  tempMenuItem.addActionListener(this);
  breadMenu.add(tempMenuItem);
 
  tempMenuItem = new MenuItem("Rye");
  tempMenuItem.addActionListener(this);
  breadMenu.add(tempMenuItem);
 
  toastMenu = new Menu("Toast");
 
  tempMenuItem = new MenuItem("Light");
  tempMenuItem.addActionListener(this);
  toastMenu.add(tempMenuItem);
 
  tempMenuItem = new MenuItem("Medium");
  tempMenuItem.addActionListener(this);
  toastMenu.add(tempMenuItem);
 
  tempMenuItem = new MenuItem("Dark");
  tempMenuItem.addActionListener(this);
  toastMenu.add(tempMenuItem);
 
  mBar = new MenuBar();
  mBar.add(breadMenu);
  mBar.add(toastMenu);
 
  helpMenu = new Menu("Help");
  helpMenu.add(new MenuItem("help"));
 
  mBar.setHelpMenu(helpMenu);
  tField = new TextField(" ", 30);
 
  setLayout(new FlowLayout());
  add(tField);
  setMenuBar(mBar);
 
  addWindowListener(new WinCloser());
  setTitle("Using Menu Bars");
  setBounds(100,100,300,300);
  setVisible(true);
 }
 
 public void actionPerformed(ActionEvent ae) {
  String cmd = ae.getActionCommand();    //어떤항목이 사용자에게 선택되었는지 알수있다
  tField.setText("You selected : " + cmd);
 }
 
 public static void main(String[] args) {
  TestMenuItems tmi = new TestMenuItems();
 }
}

class WinCloser extends WindowAdapter {
 public void windowClosing(WindowEvent e) {
  System.exit(0);
 }
}

Posted by 청웨일