java 57

자바 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

Wrapper 클래스

자바에서는 정수나 실수와 같은 기초 자료형을 제외하고는 모든 것이 객체로 되어 있다. 하지만 어떤 경우에는 정수와 같은 기초 자료형도 객체로 포장하고 싶은 경우가 있다. 가장 대표적인 예가 객체만을 저장하는 ArrayList이다. ArrayList에 기초 자료형을 넣으려면 기초 자료형을 객체로 포장하여야 한다. 이것이 바로 Wrapper 클래스이다. Wrapper 클래스는 정수와 같은 기초 자료형을 저장하고 있는 클래스이다. 예를 들어서 Integer 클래스는 정수값을 데이터로 가지고 있다. Integer 클래스의 객체를 만드는 문장은 다음과 같다. Integer obj = new Integer(10); 랩퍼 클래스는 여러 가지 유용한 메소드도 제공한다. 특히 저장된 값을 다른 자료형으로 변환하는 메소드..

java 2019.04.22

Object 클래스

자바에서는 클래스를 정의할 때 명시적으로 부모 클래스를 선언하지 않으면 Object클래스가 부모 클래스가 된다. Object클래스는 java.lang 패키지에 들어 있으며 자바 클래스 계층 구조에서 맨 위에 위치하는 클래스이다. public boolean equals(Object obj) : obj가 이 객체와 같은지를 나타낸다. public String toString() : 객체의 문자열 표현을 반환한다. public Object clone() : 객체 자신의 복사본을 생성하여 반환한다. public int hashCode() : 객체에 대한 해쉬코드를 반환한다. protected void finalize() : 가비지 콜랙터에 의하여 호출된다. public final Class getClass() ..

java 2019.04.22

자바 패키지란?

자바는 서로 관련된 클래스들을 하나로 묶을 수 있는 방법을 제공하는데, 그것이 바로 패키지(Package)이다. 패키지를 사용하여서 관련된 클래스들을 묶을 수 있고, 동일한 클래스 이름을 충돌 없이 여러 개의 패키지에서 쓸 수 있다. 왜 패키지 구조를 사용하는가? 클래스 이름이 겹치더라도 패키지가 다르면 중복 문제가 발생하지 않기 때문이다. 패키지를 사용하는 가장 중요한 이유는 바로 "이름공간(name space)" 때문이다. 서로 관련된 클래스들을 묶어서 조직화 할 수 있다. 라이브러리가 하나로 되어 있는 것보다 필요한 클래스를 쉽게 찾을 수 있다. 패키지마다 이름 공간을 따로 갖기 때문에 동일한 클래스 이름이라 하더라도 패키지가 다르면 사용할 수 있다. 패키지별로 접근에 제야을 가할 수 있다. 패키지..

java 2019.04.22