분류 전체보기 501

여러 가지 이벤트 처리 방법

1. 프레임 클래스가 이벤트를 처리 import javax.swing.*; import java.awt.event.*; public class event extends JFrame implemets ActionListener { private JButton button; private JLabel label; int counter = 0; //event 클래스는 JFrame클래스를 상속받고 동시에 ActionListener를 구현한다. 따라서 프레임이 버튼에서 발생하는 이벤트도 처리할 수 있다. public void actionPerformed(ActionEvent e) { counter ++; label.setText("현재의 카운터값 : "+ counter); } // event클래스 안에 actio..

이벤트란?

이벤트란? 일반적인 프로그램은 알고리즘에 따라서 문장들을 차례대로 실행하여 작업을 진행하지만, GUI 프로그램에서는 버튼과 같은 컴포넌트들을 화면에 배치한 후에, 사용자의 입력을 기다리고 있다가, 사용자가 특정 버튼을 누르면 작업이 진행된다. 이와같이 어떤 이벤트가 일어나는지를 감시하고 있다가 이벤트가 발생하면 적절한 처리를 해주는 프로그래밍 방식을 이벤트-구동 프로그래밍(event-driven programming)이라고 한다. 이벤트는 누가 처리하는가? 객체 지행 프로그램에서는 모든 작업을 객체(object)가 한다. 이벤트 처리도 객체가 한다. 이벤트를 처리하는 클래스를 정의하고 이 클래스의 객체 A를 생성한다면, 이 객체를 가지고 이벤트를 발생하는 객체 B(예를 들어 버튼)에 등록하면 된다. 차후..

자바 기초 컴포넌트들

레이블(JLabel) : 텍스트를 표시할 수 있는 공간 텍스트필드(JTextField) : 사용자가 한 줄의 텍스트를 입력할 수 있는 공간 버튼(JButton) : 클릭되면 어떤 동작을 실행하는 버튼 레이블 컴포넌트 중에서 아마 가장 간단한 것이다. 레이블은 편집이 불가능한 텍스트를 표시하기 위한 컴포넌트이다. 레이블은 다양한 용도로 사용되는데 컴포넌트들의 캡션을 표시하거나 도움이 되는 정보 또는 계산의 결과를 표시하는데 사용될 수 있다. 레이블은 텍스트와 이미지를 동시에 표시할 수 있다. 또한 레이블에 나타나는 텍스트의 속성은 변경할 수 있다. 즉 폰트의 종류, 크기, 색상 등은 변경가능하다. 텍스트 필드 텍스트 필드(text field)는 사용자가 한 줄의 텍스트를 입력할 수 있는 기본적인 텍스트 콘..

java/GUI 2019.05.11

패널 사용하기

패널(panel)은 컴포넌트들을 포함하고 있도록 설계된 컨테이너 중의 하나이다. 레이블이나 버튼과 같은 컴포넌트들을 화면에 표시하는 일반적인 방법은 패널에 이들 컴포넌트를 추가하고 그 패널을 프레임에 추가하는 것이다. 물론 패널을 쓰지않고 프레임에 컴포넌트들을 직접 추가할 수도 있지만 별도의 패널을 쓰는 것이 유지보수 및 배치관리에 좋은 경우게 많다. 예를들어서 다음과 같이 화면을 2개로 나누어서 표시하고자 할 때 패널을 사용할 수 있다. 패널도 컨테이너의 일종이므로 setLayout(LayoutManager layout)을 호출하여 배치관리자를 설정할 수 있다. JPanel panel = new JPanel(); panel.setLayout(new GirdLayout(3, 3)); 패널에서 가장 중요한..

java/GUI 2019.05.11

배치 관리자

버튼과 같은 자식 컴포넌트들은 컨테이너 내부에 배치된다. 프로그래머가 절대 좌표값으로 자식 컴포넌트의 위치를 지정할 수도 있다. 그러나 절대 위치를 사용하여 컴포넌트들을 배치할 경우, 플랫폼에 따라서 프로그램의 모습이 상당히 달라질 수 있다. 이러한 문제점을 해결하기 위하여 자바에서는 배치 관리자(layout manager)을 사용한다. 배치 관리자는 컨테이너 안에 존재하는 컴포넌트들의 크기와 위치를 자동적으로 관리하는 객체이다. java.awt 패키지에는 여러 가지의 배치를 제공하는 배치 관리자가 제공된다. BorderLayout 컴포넌트들이 5개의 영역인 North, South, East, West, Center 중 하나로 추가된다. 프레임, 애플릿, 대화 상자와 같은 최상위 컨테이너의 디폴트 배치 ..

java/GUI 2019.05.11

자바 JFrame 클래스

1. 최상위 컨테이너인 JFrame에 대하여 살펴보자. 컨테이너는 컴포넌트들을 트리(tree) 형태로 저장한다. 최상위 컨테이너는 이 트리의 루트 노드가 된다. 각 컴포넌트들은 딱 한번만 컨테이너에 포함될 수 있다. 이미 다른 컨테이너에 들어있는 컴포넌트를 또 다른 컨테이너에 넣으면 안된다. 최상위 컨테이너는 내부에 콘텐트 페인(content pane)을 가지고 있다. 여기에 화면에 보이는 컴포넌트를 저장한다. 최상위 컨테이너는 메뉴바를 추가할 수 있다. cf. content Pane이란 : 화면에 출력될 모든 컴포넌트들이 부착되는 공간 2. 프레임 객체의 속성을 변경하는 방법 객체의 속성을 변경하려면 set으로 시작되는 설정자 메소드를 사용하여야 한다. 우리가 상속에서 살펴보았듯이 조상 클래스가 제공하..

java/GUI 2019.05.11

자바 GUI 작성 절차

애플리케이션의 GUI를 작성하려면 제일 먼저 최상위 컨테이너를 하나 생성하여야 한다. 스윙에는 JFrame, JDialog, JApplet의 3가지의 최상위 컨테이너가 존재한다. JFrame은 윈도우와 메뉴를 가지는 일반적인 데스크탑 애플리케이션에 적합하다. JDialog는 메뉴가 없는 대화 상자 형식의 간단한 애플리케이션에 사용된다. JApplet은 애플릿을 작성하는데 사용된다. 최상위 컨테이너가 생성되었다면 다음 단계는 애플리케이션에 필요한 컴포넌트를 생성하여 컨텡너에 추가하는 것이다. 예를들어 버튼이 필요하다면 버튼을 생성하여 컨테이너에 추가하면 된다. (1) 컨테이너를 작성한다 (2) 컴포넌트를 추가한다. 컨테이너 생성하기 상속없이 JFrame 클래스를 직접 사용할 수도 있지만 보다 일반적인 방법..

java/GUI 2019.05.09

자바 컴포넌트와 컨테이너

컴포넌트 단순한 컴포넌트로서 JButton, JLabel, JCheckbox, JChoice, JMenu, JTextField, JScrollbar, JTextArea, JCanvas 등이 있다. 컨테이너 다른 컴포넌트를 안에 포함할 수 있는 컴포넌트로서 JFrame, JDialog, JApplet, JPanel, JScrollPane 등이 있다. 컨테이너의 종류 컨테이너는 다시 최상위 컨테이너와 일반적인 컨테이너로 나누어진다. 최상위 컨테이너 최상위 컨테이너란 절대 다른 컨테이너 안에 포함될 수 없는 컨테이너를 의미한다. JFrame, JDialog, JApplet등이 여기에 해당된다. 일반 컨테이너 일반적인 컨테이너란 다른 컨테이너 안에 포함될 수 있는 컨테이너로 JPanel, JScrollPane ..

java/GUI 2019.05.09

자바 그래픽 사용자 인터페이스(GUI)

그래픽 사용자 인터페이스(Graphical User Interface, 간단히 GUI)를 사용한다. GUI는 컴포넌트들로 이루어진다. 컴포넌트(component)란 버튼이나 체크박스와 같은 기본적인 빌딩 블록을 의미한다. AWT와 스윙 자바에서 사용할 수 있는 GUI에는 AWT(Abstract Windows Toolkit)와 스윙(Swing)이 있다. AWT는 초기 자바 버전에서 제공하였던 GUI이다. AWT는 운영체제가 제공하는 자원을 이용하여 컴포넌트를 생성한다. 스윙은 AWT와는 달리, 컴포넌트가 자바로 작성되어 있기 때문에 어떤 플랫폼에서도 일관된 화면을 보여줄 수 있다. Java AWT Java Swing AWT는 플랫폼에 의존적이다. 스윙은 플랫폼에 독립적이다. AWT 컴포넌트는 용량이 크다...

java/GUI 2019.05.09

예외 처리 (try/catch)

어떤 프로그램이든지 잘못된 코드, 부정확한 데이터, 예외적인 상황에 의하여 오류가 발생할 수 있다. 예를 들어 배열의 인덱스가 배열의 한계를 넘을 수도 있고, 디스크에서는 하드웨어 에러가 발생할 수 있다. 자바에서는 이러한 오류를 예외라는 이름으로 부른다. 예외(exception)이란 "exceptional event"의 약자이다. 대개의 경우 오류가 발생하면 프로그램이 종료된다. 그러나 무조건 종료하는 것보다 프로그램에서 오류를 감지하여 우아하게 프로그램을 종료하거나 오류를 처리한 후에 계속 실행할 수 있다면 더 나은 프로그램이 될 수 있다. cf. 버그와예외는 구별하여야 한다. 실행 도중에 버그로 인해서 실행 오류가 발새알 수 있지만 이러한 버그는 개발 과정에서 모두 수정되어야 한다. 자바에서는 버그..

java 2019.04.30