Swing 컴포넌트 텍스트 컴포넌트 텍스트 필드 텍스트 영역 스크롤 페인 체크 박스 라디오 버튼.

Slides:



Advertisements
Similar presentations
6 장 객체 - 지향 설계 ③. 목차 GUI 레이아웃  전화기 키 패드 전화기 키 패드 전화기 키 패드 모양의 GUI 를 만드는 Telephone.java, TelephonePanel.java 를 완성해 보자.  주석을 참고하여 TelephonePanel.java.
Advertisements

제 8 장 그래픽 사용자 인터페이스 어서와 Java 는 처음이지 !. 그래픽 사용자 인터페이스 (Graphical User Interface, 간단히 GUI) 는 컴포넌트들로 구성된다.
명품 JAVA Programming 제 9 장 자바의 GUI, AWT와 Swing.
11장. 프로토콜 핸들러 AI &HC I LAB 김 성 현.
명품 JAVA Essential.
어서와 Java는 처음이지! 제12장 스윙 컴포넌트.
명품 JAVA Programming 제 11 장 스윙 컴포넌트와 이벤트 핸들링.
- 계산기 GUI 구성하기 - 조원: 박강국 오정은 이귀식 김도윤 안영진.
10. 이벤트 처리와 그래픽프로그래밍 자바프로그래밍 강원대학교.
제 12일 그래픽사용자인터페이스 (Graphic User Interface)
그래픽 프로그래밍 (GUI - Graphic User Interface)
Ch.22 Command Pattern 장 덕 성 계명대학교 컴퓨터공학과 정보공학실험실
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
9장. 스윙 프로그래밍.
10장. 이벤트 처리와 그래픽 프로그래밍.
GUI 이벤트, 이벤트 리스너와 이벤트 소스 그림 그리기 내부 클래스
제7장 이벤트 프로그래밍.
Java 16장. 스윙 public class SumTest {
7장 배열 ②.
7장 배열 ③.
레이아웃 관리자 스윙 구성요소 비트박스 프로그램
명품 JAVA Programming 제 13 장 스레드와 멀티태스킹.
컴퓨터 프로그래밍 실습 #7 제 4 장 GUI 클래스 작성.
GUI 환경에서 작동하는 프로그램에 대하여 윈도우 프로그램의 작성 방법 그래픽과 이미지 디스플레이 방법 오디오 파일 재생 방법
명품 JAVA Essential.
명품 JAVA Programming.
Chap14 스윙(SWING) 14.1 스윙 컴포넌트 14.2 컴포넌트의 이벤트 처리
제 4 장 클래스 작성 Lab 4- 2.
DB와 WEB 연동(1) [2-Tier] Java Applet 이용
9장 AWT(1).
Power Java 제19장 배치 관리자(Layout Manager).
명품 JAVA Programming 제 12 장 그래픽.
어서와 Java는 처음이지! 제8장 그래픽 사용자 인터페이스.
Choi Younghwan CSE HUFS
java.awt 패키지의 단순 컴포넌트와 이벤트 처리
Chapter 12. Awt와 Swing Chapter 13. 배치 관리자 Chapter 14. 이벤트 관리자
객체지향 언어와 클래스, 객체 ㅎㅎ 개요 클래스의 선언, 객체의 생성 및 속성 참조 방식 멤버 변수 메소드 한빛미디어(주)
자바 5.0 프로그래밍.
목 차 1. swing component 특징 및 관련 packages
Swing 컴포넌트, 컨테이너 레이아웃 매니저 그리고 이벤트를 기반으로 하는 시스템 독립적인 GUI 프로그래밍을 위한 API.
Java Seminar Chapter 4.
9장 다형성 Lab 9-2.
10장 예외 Lab 10-2.
5장 조건과 반복 ③.
명품 JAVA Essential.
메모장 구동.
9장 AWT(1).
GUI 프로그래밍과 AWT 컴퓨터 공학실험(I) 인공지능 연구실.
명품 JAVA Programming 제 15 장 애플릿과 멀티미디어.
객체지향적인 프로그래밍에 대한 이해 클래스와 객체의 개념에 대한 이해
제 9주 이벤트 처리 그래픽프로그래밍1 제 9주 강의 목표
그래픽 사용자 인터페이스와 사건처리.
4장 Random Number 프로그래밍 언어 실험실 석사 3학기 박중기
03. 안드로이드를 위한 Java 문법 제목. 03. 안드로이드를 위한 Java 문법 제목.
Ch.1 Iterator Pattern <<interface>> Aggregate +iterator
제 2장 어휘구조와 자료형 토 큰 리 터 럴 주 석 자 료 형 배 열 형.
JAVA WINDOW PROGRAMMING
JA A V W. 04.
CACM 구현 public class CACM { public CACM(File file)
제8장 쓰레드 프로그래밍.
제 4 장 클래스 작성 Lab 4- 2.
Outline 클래스의 해부 캡슐화(Encapsulation) 메쏘드의 해부 그래픽 객체(Graphical Objects)
GUI 프로그래밍과 AWT 컴퓨터 공학실험(I) 인공지능 연구실.
JVM의 구조와 메모리 모델 JVM의 내부 구조 클래스 파일 클래스 로더 메소드(method) 영역 힙(heap) 영역
Chapter 4 클래스 작성.
Java 5장. 객체지향 개념 public class SumTest {
고급 스윙 컴포넌트.
5장 조건과 반복 ③.
Chapter8 : 인터페이스와 패키지 8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용
Presentation transcript:

Swing 컴포넌트 텍스트 컴포넌트 텍스트 필드 텍스트 영역 스크롤 페인 체크 박스 라디오 버튼

기본 컴포넌트 텍스트 컴포넌트 텍스트 필드 텍스트 영역 스크롤 페인 체크 박스 라디오 버튼

스윙 텍스트 컴포넌트들 텍스트 필드 일반 텍스트 영역 스타일 텍스트 영역 종류 텍스트 컴포넌트 그림 JTextField JPasswordField JFormattedTextField 일반 텍스트 영역 JTextArea 스타일 텍스트 영역 JEditorPane JTextPane

스윙 텍스트 컴포넌트들

상속 계층 구조

JTextComponent 클래스 컴포넌트가 가진 데이터는 document라고 하는 이름의 인스턴스에 저장된다. document는 MVC에서 모델(Model)에 해당한다. “오려두기”, “복사하기”, “붙이기”, “삽입하기”와 같은 기본적인 텍스트 편집 기능을 제공한다. 이들 기능들은 메뉴와 버튼들과 연결될 수 있다. 단축키 기능을 제공한다. 무제한의 되돌림 기능(undo)과 다시하기 기능(redo)을 제공한다. 교체가능한 카렛과 카렛 변경 리스터와 내비게이션 필터를 제공한다. 문서 필터를 제공한다.

JTextComponent 클래스

JTextComponent 메소드

텍스트 필드

예제 import javax.swing.*; import java.awt.event.*; class MyFrame extends JFrame { private JButton button; private JTextField text, result; public MyFrame() { setSize(300, 130); setTitle("제곱 계산하기"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ButtonListener listener = new ButtonListener(); // 리스너 객체 생성 JPanel panel = new JPanel(); panel.add(new JLabel("숫자 입력: ")); // 레이블 생성 text = new JTextField(15); // 컬럼수가 15인 텍스트 필드 생성 text.addActionListener(listener); // 텍스트 필드에 리스너 연결 panel.add(text); panel.add(new JLabel("제곱한 값: ")); result = new JTextField(15); // 결과를 나타낼 텍스트 필드 result.setEditable(false); // 편집 불가 설정 panel.add(result);

button = new JButton("OK"); button.addActionListener(listener); panel.add(button); add(panel); setVisible(true); } // 텍스트 필드와 버튼의 액션 이벤트 처리 private class ButtonListener implements ActionListener { public void actionPerformed(ActionEvent e) { if (e.getSource() == button || e.getSource() == text) { String name = text.getText(); int value = Integer.parseInt(name); result.setText(" " + value * value); text.requestFocus(); public class TextFieldTest extends JFrame { public static void main(String[] args) { new MyFrame();

텍스트 영역 텍스트 영역(TextArea): 여러 줄의 텍스트가 들어 갈 수 있는 컴포넌트

예제 import java.awt.*; import java.awt.event.*; import javax.swing.*; class MyFrame extends JFrame implements ActionListener { protected JTextField textField; protected JTextArea textArea; public MyFrame() { setTitle("Text Area Test"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); textField = new JTextField(30); textField.addActionListener(this); textArea = new JTextArea(10, 30); textArea.setEditable(false); add(textField, BorderLayout.NORTH); add(textArea, BorderLayout.CENTER); pack(); setVisible(true); } public void actionPerformed(ActionEvent evt) { String text = textField.getText(); textArea.append(text + "\n"); textField.selectAll(); textArea.setCaretPosition(textArea.getDocument().getLength()); } public class TextAreaTest extends JFrame { public static void main(String[] args) { new MyFrame();

스크롤 페인 텍스트 영역에 스크롤바를 만들려면 스크롤 페인에 텍스트 영역을 넣어야 한다. textArea = new JTextArea(10, 30); // 텍스트 영역을 생성한다. JScrollPane scrollPane = new JScrollPane(textArea); // ①

체크 박스

JCheckBox의 메소드

예제 import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.applet.Applet; import javax.swing.*; class MyFrame extends JFrame implements ActionListener { private JButton buttonOK; private JCheckBox onion, cheese, tomato; public MyFrame() { setTitle("체크박스 테스트"); setSize(300, 130); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JLabel label = new JLabel("햄버거에 무엇을 추가하시겠습니까?"); JPanel topPanel = new JPanel(); topPanel.add(label); add(topPanel, BorderLayout.NORTH); // 체크 박스 생성 및 추가 JPanel panel = new JPanel(); onion = new JCheckBox("양파"); panel.add(onion); cheese = new JCheckBox("치즈"); panel.add(cheese); tomato = new JCheckBox("토마토"); panel.add(tomato); add(panel, BorderLayout.CENTER); // 버튼 생성 및 추가 buttonOK = new JButton("OK"); JPanel bottomPanel = new JPanel(); bottomPanel.add(buttonOK); add(bottomPanel, BorderLayout.SOUTH); buttonOK.addActionListener(this); setVisible(true); }

예제 public void actionPerformed(ActionEvent e) { if (e.getSource() == buttonOK) { String msg = ""; if (onion.isSelected()) msg += "양파\n"; if (cheese.isSelected()) msg += " 치즈"; if (tomato.isSelected()) msg += " 토마토"; msg = "선택한 옵션은 다음과 같습니다.\n " + msg; System.out.println(msg); onion.setSelected(false); cheese.setSelected(false); tomato.setSelected(false); } public class MyFrameTest extends JFrame { public static void main(String[] args) { new MyFrame();

라디오 버튼

생성자와 메소드 JRadioButton radio1 = new JRadioButton("Small Size“); JRadioButton radio1 = new JRadioButton("Small Size“, true);

그룹핑하기 // 라디오 버튼을 생성한다. JRadioButton radio1 = new JRadioButton("선택 1"); // ButtonGroup 객체를 생성한다. ButtonGroup group = new ButtonGroup(); // 라디오 버튼들을 ButtonGroup 객체에 추가한다. group.add(radio1); group.add(radio2); group.add(radio3);

예제 import javax.swing.*; import javax.swing.border.Border; import java.awt.event.*; import java.awt.*; class MyFrame extends JFrame implements ActionListener { private JRadioButton small, medium, large; private JLabel text; private JPanel topPanel, sizePanel, resultPanel; public MyFrame() { setTitle("라디오 버튼 테스트"); setSize(300, 150); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); topPanel = new JPanel(); JLabel label = new JLabel("어떤 크기의 커피를 주문하시겠습니까?"); topPanel.add(label); add(topPanel, BorderLayout.NORTH);

예제 sizePanel = new JPanel(); small = new JRadioButton("Small Size"); medium = new JRadioButton("Medium Size"); large = new JRadioButton("Large Size"); ButtonGroup size = new ButtonGroup(); size.add(small); size.add(medium); size.add(large); small.addActionListener(this); medium.addActionListener(this); large.addActionListener(this); sizePanel.add(small); sizePanel.add(medium); sizePanel.add(large); add(sizePanel, BorderLayout.CENTER); resultPanel = new JPanel(); text = new JLabel("크기가 선택되지 않았습니다."); text.setForeground(Color.red); resultPanel.add(text); add(resultPanel, BorderLayout.SOUTH); setVisible(true); } public void actionPerformed(ActionEvent e) { if (e.getSource() == small) { text.setText("Small 크기가 선택되었습니다."); } if (e.getSource() == medium) { text.setText("Medium 크기가 선택되었습니다."); if (e.getSource() == large) { text.setText("Large 크기가 선택되었습니다."); public class RadioButtonTest extends JFrame { public static void main(String[] args) { new MyFrame();

경계 만들기

고급 컴포넌트 레이블과 버튼에 이미지 표시 리스트 콤보 박스 스피너 슬라이더 트리 색상선택기및 폰트선택기 메뉴 대화상자 테이블

텍스트와 레이블에 이미지 추가

텍스트와 레이블에 이미지 추가 ImageIcon 인스턴스를 생성하여야 한다. ImageIcon image = new ImageIcon("image.gif"); setIcon() 메소드를 사용 JLabel label = new JLabel("이미지 레이블"); label.setIcon(image);

실행 결과

리스트 리스트(List)는 여러 개의 선택 항목 중에서 하나를 선택하기 위한 컴포넌트이다. 리스트는 한 줄에 하나씩 선택 항목을 나타내며 이 영역은 스크롤이 가능하다. 일반적으로 사용자는 마우스 클릭에 의하여 항목을 선택 더블 클릭이나 엔터 키를 치면 액션 이벤트가 발생한다.

리스트의 메소드

선택 모드 변경 list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

리스트이 이벤트 처리

콤보박스

콤보 박스의 메소드

콤보 박스의 이벤트 처리

실행 결과

스피너

슬라이더

트리

트리의 생성 순서

색상 선택기 JColorChooser colorChooser = new JColorChooser(Color.RED);

예제

파일 선택기

파일 선택기 표준 열기 대화상자를 만드는 것은 다음의 문장으로 한다. //파일 선택기를 생성한다. final JFileChooser fc = new JFileChooser(); ... //버튼이 클릭되면 반환된다. int returnVal = fc.showOpenDialog(aComponent);

파일 선택기

메뉴

메뉴 클래스의 상속 계층도

메뉴 생성 순서

대화 상자 대화 상자 윈도우는 임시 정보를 나타내는데 사용되는 독립적인 서브 윈도우이다. 몇 개의 미리 정해진 표준 대화 상자는 아주 간단히 만들 수 있다.

showMessageDialog()

showOptionDialog()

테이블 테이블은 스프레드 쉬트처럼 데이터를 테이블 형식으로 표시하고 사용자가 값을 편집할 수 있는 컴포넌트이다