본문 바로가기

반응형

자바공부

(75)
자바 이벤트 리스너, 명품자바프로그래밍10장 * 자바의 AWT와 스윙 패키지는 사용자가 이벤트 리스너를 작성할 수 있도록 이벤트 리스너 인터페이스(interface)를 제공한다. 자바는 사용자가 바로 사용할 수 있는 이벤트 리스너를 제공하지 않기 때문에, 스스로 필요한 이벤트 리스너를 작성하여야 한다. 리스너 인터페이스의 추상 메소드를 모두 구현하여 이벤트 리스너를 완성하여야 한다. interface ActionListener{ public void actionPerformed(ActionEvent e); // Action 이벤트 발생 처리 } interface MouseListener{ public void mousePressed(MouseEvent e);// 마우스 버튼이 눌러지는 순간 public void mouseReleased(MouseE..
자바 이벤트 처리, 명품자바프로그래밍10장 * 이벤트 기반 프로그래밍은 이벤트의 발생에 의해 프로그램 실행 흐름이 결정되는 방식의 프로그래밍 패러다임이다. 이벤트는 키 입력, 마우스 클릭, 마우스 드래그 등 사용자의 액션이나 센서 등 외부 장치로부터의 입력, 네트워크를 통한 다른 컴퓨터로부터의 데이터 수신, 다른 스레드나 프로그램으로부터의 메시지 수신 등에 의해 발생한다. * 이벤트 기반 응용프로그램은 각 이벤트를 처리하는 이벤트 리스너(event listener) 혹은 이벤트 핸들러를 보유하며 이벤트가 발생할 때마다 해당 이벤트 리스너가 실행된다. 사용자가 스윙 기반의 GUI 응용프로그램상에서 버튼 클릭등의 GUI 컴포넌트에 입력 행위를 하면 이벤트가 발생한다. * new 버튼이 클릭되어 처리되는 과정을 통해 이벤트가 발생하는 과정 1) 사용자..
자바 배치관리자 없는 컨테이너, 명품자바프로그래밍9장 * 모든 컨테이너는 배치관리자를 반드시 가지고, 배치관리자가 컴포넌트의 위치와 크기를 결정하도록 하는 것이 자바 GUI의 기본 정신이다. 배치관리자는 컴포넌트를 절대적인 위치에 배치하지 않고, 각 컴포넌트를 다른 컴포넌트의 위치에 대해 상대적인 위치에 배치한다. 그러므로 컨테이너의 크기가 변하면 컴포넌트의 위치도 함께 변한다. 배치관리자를 사용하면 컴포넌트의 위치에 대해서 신경 쓰지 않아도 되지만, 현실에서는 자바의 배치관리자들로는 구성하기 어려운 사용자 인터페이스를 만들어야 하는 경우가 종종 발생한다. ex.1) 컴포넌트의 크기나 위치를 개발자 임의로 결정하고자 하는 경우 ex.2) 게임 프로그램과 같이 시간이 마우스/키보드의 입력에 따라 컴포넌트의 위치와 크기가 수시로 변하는 경우 ex.3) 여러 컴..
자바 GridLayout 배치관리자, 명품자바프로그램9장 * GridLayout은 컨테이너 공간을 사각형의 그리드(격자) 모양으로 분할하며 그리드의 각 셀에는 오직 하나의 컴포넌트를 배치하는 방법이다. GridLayout은 컨테이너에 추가되는 컴포넌트들을 순서대로 셀에 배치한다. container.setLayout(new GridLayout(4,3)); // 4x3 분할로 컴포넌트 배치 container.add(new JButton("1")); // 상단 왼쪽 첫 번째 셀에 버튼 배치 container.add(new JButton("2")); //그 옆 셀에 버튼 배치 * GridLayout의 생성자와 속성 생성자: GrindLayout(int rows, int cols, int hGap, int vGap) rows * cols의 그리드로 컨테이너 공간을 분할..
자바 BorderLayout 배치관리자, 명품자바프로그래밍 9장 * BorderLayout 배치관리자는 컨테이너 공간을 동(EAST), 서(WEST), 남(SOUTH), 북(NORTH), 중앙(CENTER)의 5개 영역으로 분할하여 배치한다. * 다른 배치관리자와는 달리 BorderLayout 배치관리자를 가진 컨테이너에 컴포넌트를 삽입하기 위해서는 add()메소드를 사용하여 컴포넌트의 위치를 명확히 정해주어야 한다. void add(Component comp, int index); // comp 컴포넌트를 index위치에 삽입한다. // Example container.setLayout(new BorderLayout()); container.add(new JButton("div"), BorderLayout.WEST); container.add(new JButton(..
자바 FlowLayout 배치관리자, 명품자바프로그래밍9장 * add() 메소드를 사용하여 FlowLayout 배치관리자는 가진 컨테이너에 컴포넌트를 부착할 수 있다. container.setLayout(new FlowLayout()); container.add(new JButton("add")); container.add(new JButton("sub")); container.add(new JButton("mul")); container.add(new JButton("div")); container.add(new JButton("Calculate")); * FlowLayout 배치관리자는 컴포넌트를 컨테이너 공간 내에서 왼쪽에서 오른쪽으로 배치하고, 더 이상 오른쪽에 공간이 없으면 다시 아래로 내려와서 왼쪽에서 오른쪽으로 배치한다. * FlowLayout 배치..
자바 컨테이너와 배치(1), 명품자바프로그래밍 9장 * 컨테이너에는 여러 개의 컴포넌트를 부착할 수 있다. 배치관리자(Layout Manager)가 컨테이너에 부착되는 컴포넌트들의 위치와 크기를 결정한다. 배치관리자는 컨테이너에 속한 것으로 컨테이너마다 하나씩 존재한다. * AWT나 스윙의 컨테이너의 특징 1) 하나의 컨테이너는 반드시 하나의 배치관리자를 가진다. 2) 배치관리자는 컨테이너에 컴포넌트가 들어오는 시점에 컴포넌트의 위치와 크기를 결정한다. 3) 배치관리자는 컨테이너의 크기가 변경되면 컨테이너 내부의 모든 컴포넌트들의 위치와 크기를 재조정한다. * 자바에는 대표적인 4가지 배치관리자가 있다. 배치관리자는 java.awt 패키지에 존재한다. import java.awt.*; 1) FlowLayout 컨테이너에 컨포넌트가 들어오면 순서대로 왼쪽에..
자바 스윙 응용프로그램 종료, 명품자바프로그래밍9장 * 자바에서 프로그램을 종료하기 위한 문장 System.exit(0); // 자바 프로그램을 종료한다. '프레임 종료 버튼(X)'의 클릭은 프레임 윈도우를 닫는 버튼이지 프로그램을 종료시키는 버튼은 아니다. 프로그램이 종료되지 않고 프로그램만 닫힌 상태로 화면에 보이지 않는 상태이다. 그러므로 만일 이 버튼이 클릭되었을 때 프레임 윈도우를 닫는 것과 동시에 스윙 프로그램도 함께 자동 종료시코가자 한다면 코드가 필요하다. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 프레임이 닫힐 때 프로그램도 함께 종료한다. * 스윙 프로그램에서는 main() 메소드가 종료되어도 프레임 윈도우가 살아서 작동한다. 자바 응용프로그램이 시작되면 자바 가상기계는 이 응용..

반응형