10장 예외 Lab 10-2.

Slides:



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

프로그래밍 개론 Ⅰ 제 3장. 클래스와 객체의 사용 ①.
12. GUI – 그래픽 이야기.
명품 JAVA Essential.
어서와 Java는 처음이지! 제20장 실전프로젝트 #2.
어서와 Java는 처음이지! 제12장 스윙 컴포넌트.
10. 예외 처리.
그래픽 프로그래밍 (GUI - Graphic User Interface)
Ch.22 Command Pattern 장 덕 성 계명대학교 컴퓨터공학과 정보공학실험실
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
9장. 스윙 프로그래밍.
GUI 이벤트, 이벤트 리스너와 이벤트 소스 그림 그리기 내부 클래스
149개의 실습예제로 배우는 Flash 8.
제7장 이벤트 프로그래밍.
Java 16장. 스윙 public class SumTest {
7장 배열 ②.
7장 배열 ③.
레이아웃 관리자 스윙 구성요소 비트박스 프로그램
명품 JAVA Programming 제 13 장 스레드와 멀티태스킹.
컴퓨터 프로그래밍 실습 #7 제 4 장 GUI 클래스 작성.
GUI 환경에서 작동하는 프로그램에 대하여 윈도우 프로그램의 작성 방법 그래픽과 이미지 디스플레이 방법 오디오 파일 재생 방법
명품 JAVA Essential.
명품 JAVA Programming.
8장 상속 ②.
4장 자바 기본 구조 4.1 자바 응용 프로그램 분석 4.2 자바 애플릿 프로그램 분석
윤 홍 란 다이알로그(대화상자) 윤 홍 란
Chap14 스윙(SWING) 14.1 스윙 컴포넌트 14.2 컴포넌트의 이벤트 처리
Report #2 - Solution 문제 #1: 다음과 같이 프로그램을 작성하라.
10장 예외 Lab 10-1.
제 4 장 클래스 작성 Lab 4- 2.
9장 AWT(1).
Power Java 제19장 배치 관리자(Layout Manager).
명품 JAVA Programming 제 12 장 그래픽.
Choi Younghwan CSE HUFS
7장 배열 ②.
Chapter 12. Awt와 Swing Chapter 13. 배치 관리자 Chapter 14. 이벤트 관리자
Swing 컴포넌트 텍스트 컴포넌트 텍스트 필드 텍스트 영역 스크롤 페인 체크 박스 라디오 버튼.
Lesson 5. 레퍼런스 데이터형.
프로그래밍 개론 Ⅰ 제 3장. 클래스와 객체의 사용 ②.
Java Seminar Chapter 4.
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
9장 다형성 Lab 9-2.
Lesson 6. 형변환.
5장 조건과 반복 ③.
명품 JAVA Essential.
2장 자바환경과 자바 프로그램 2.1 자바 개발 환경 2.2 자바 통합환경 2.3 자바 응용 프로그램과 애플릿 프로그램
메모장 구동.
9장 AWT(1).
명품 JAVA Programming 제 15 장 애플릿과 멀티미디어.
Communication and Information Systems Lab. 황재철
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
그래픽 사용자 인터페이스와 사건처리.
Java 6장. 클래스 : 속성 public class SumTest {
제 4 장 클래스 작성 4-1 LAB.
컴퓨터 프로그래밍 실습 #6 제 4 장 클래스 작성.
제 4주 2014년 1학기 강원대학교 컴퓨터학부 담당교수: 정충교
13. 연산자 오버로딩.
4 장 클래스 작성.
Ch.1 Iterator Pattern <<interface>> Aggregate +iterator
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
JA A V W. 06.
제8장 쓰레드 프로그래밍.
객체기반 SW설계 팀활동지 4.
제 4 장 클래스 작성 Lab 4- 2.
Outline 클래스의 해부 캡슐화(Encapsulation) 메쏘드의 해부 그래픽 객체(Graphical Objects)
윤 홍 란 4 장 클래스 작성 윤 홍 란
Chapter 4 클래스 작성.
어서와 C언어는 처음이지 제21장.
5장 조건과 반복 ③.
BoardGame 보드게임 따라가기.
Presentation transcript:

10장 예외 Lab 10-2

목차 도구 팁과 약어 움직이는 원 콤보 상자 통화 환전 스크롤 페인 소수 리스트

움직이는 원 버튼에 약어를 추가한다. 버튼에 도구 팁을 추가한다. 버튼이 패널의 모서리로 이동하지 못하게 해보자. ALT-l, ALT-r, ALT-u, ALT-d 버튼에 도구 팁을 추가한다. 버튼이 하는 일을 보여준다. 예) 어느 방향으로 움직일지.. 버튼이 패널의 모서리로 이동하지 못하게 해보자. 버튼을 위한 클래스 변수와 패널의 크기 필요 힌트) 좌표를 조정, 원은 모서리를 정확히 건드리지 못한다.

움직이는 원 Cont. //******************************************************* // MoveCircle.java // // Circle 패널을 통해 사용자가 버튼을 눌렀을 때 원을 // 움직일 수 있도록 GUI를 구성한다. import javax.swing.*; import java.awt.*; public class MoveCircle { public static void main(String[] args) JFrame frame = new JFrame ("MoveCircle"); frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); frame.setSize(400, 300); frame.getContentPane().add (new CirclePanel(400,300)); circlesFrame.setVisible(true); }

움직이는 원 Cont. //******************************************************* // CirclePanel.java // 중앙에 원을 그리고, 아래에는 원을 움직이는 버튼을 가지고 있다. import javax.swing.*; import java.awt.*; import java.awt.event.*; public class CirclePanel extends JPanel { private final int CIRCLE_SIZE = 50; private int x, y; private Color c; //--------------------------------------------------- // 원과 버튼을 구성한다. public CirclePanel(int width, int height) // 원의 좌표를 정한다. x = (width/2) - (CIRCLE_SIZE/2); y = (height/2) - (CIRCLE_SIZE/2); c = Color.green;

움직이는 원 Cont. this.setLayout(new BorderLayout()); // 원을 움직이기 위한 버튼을 생성한다. JButton left = new JButton ("Left"); JButton right = new JButton ("Right"); JButton up = new JButton ("Up"); JButton down = new JButton ("Down"); // 버튼에 감청자를 추가한다. left.addActionListener(new MoveListener(-20,0)); right.addActionListener(new MoveListener(20,0)); up.addActionListener(new MoveListener(0,-20)); down.addActionListener(new MoveListener(0,20)); // 버튼을 위한 패널을 구성한다. JPanel buttonPanel = new JPanel(); buttonPanel.add(left); buttonPanel.add(right); buttonPanel.add(up); buttonPanel.add(down); // 주패널의 아래쪽에 버튼 패널을 붙인다. this.add(buttonPanel, "South"); }

움직이는 원 Cont. //--------------------------------------------------- // 원을 그린다. public void paintComponent (Graphics page) { super.paintComponent (page); page.setColor(c); page.fillOval(x, y, CIRCLE_SIZE, CIRCLE_SIZE); } //******************************************************* // 원을 이동하는 버튼에 대한 감청자를 표현한다. private class MoveListener implements ActionListener private int dx; private int dy;

움직이는 원 Cont. //--------------------------------------------------- // 이동할 원의 위치를 매개변수로 받는다. public MoveListener (int dx, int dy) { this.dx = dx; this.dy = dy; } // x, y 좌표를 바꾼다. public void actionPerformed (ActionEvent e) x += dx; y += dy; repaint();

통화 환전 통화를 선택할 수 있는 콤보 상자를 추가한다. actionPerformed를 수정한다. 구성자의 매개변수 : 통화 이름을 가지고 있는 배열 actionPerformed를 수정한다. index는 선택된 통화의 index가 되게 한다. Textfield와 label을 추가한다. 선택된 통화에서 바꾸려고 하는 금액을 입력받는다. ComboListener를 update한다. Textfield로부터 값을 가져와 달러로 계산된 결과를 보여준다.

통화 환전 Cont. //******************************************************* // CurrencyConverter.java // // 다양한 통화를 달러로 계산한다. import javax.swing.*; import java.awt.*; public class CurrencyConverter { public static void main(String[] args) JFrame frame = new JFrame("Conrrency Converter"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); RatePanel ratePanel = new RatePanel(); frame.getContentPane().add(ratePanel); frame.pack(); frame.setVisible(true); }

통화 환전 Cont. //******************************************************* // RatePanel.java // 다양한 통화를 달러로 바꾸는 프로그램. import javax.swing.*; import java.awt.*; import java.awt.event.*; public class RatePanel extends JPanel { private double[] rate; private String[] currencyName; private JLabel result; //---------------------------------------------------------------- // 6개국의 통화를 달러로 바꾸는 패널을 구성한다. // 패널은 헤딩, 텍스트 필드, 콤보 박스, 결과를 보여줄 레이블을 // 포함한다. public RatePanel() JLabel title = new JLabel("How much is that in dollars"); title.setAlignmentX(Component.CENTER_ALIGNMENT); title.setFont (new Font ("Helvetica", Font.BOLD, 20));

통화 환전 Cont. // 통화 변환을 위한 배열을 구성한다. currencyName = new String[] {"Select the currency..", "European Euro","Canadian Dollar", "Jpanese Yen", "Australian Dollar", "Indian Rupee", "Mexican Peso"}; rate = new double[] {0.0, 1.2103, 0.7351, 0.0091, 0.6969, 0.0222, 0.0880}; result = new JLabel("--------------------------"); add(title); add(result); } //******************************************************* // 콤보 박스의 감청자를 표현한다. private class ComboListener implements ActionListener { //---------------------------------------------------------------- // 선택된 통화가 무엇인지를 보고, 달러로 바꾸어 보여준다. public void actionPerformed (ActionEvent event) int index = 0; result.setText("1" + currencyName[index] + " = " + rate[index] + " U.S. Dollars");

소수 리스트 PrimePanel을 수정한다. 예외처리하기 Text area가 스크롤 페인을 포함하도록 한다. 스크롤 바는 필요한 경우에만 보이게 한다. setVerticalScrollBarPolicy() , VERTICALSCROLL_AS_NEEDED 사용 예외처리하기 정수가 아닌 입력값이 들어왔을 때 예외 처리를 해주어야 한다. Text area에 “Non-integer Data!” 메시지 출력.

소수 리스트 Cont. //******************************************************* // Primes.java // // 사용자로부터 입력받은 수까지의 소수를 생성한다. import java.awt.*; import javax.swing.*; public class Primes { public static void main(String[] args) JFrame frame = new JFrame("Primes"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); PrimePanel primePanel = new PrimePanel(); frame.getContentPane().add(primePanel); frame.pack(); frame.setVisible(true); }

소수 리스트 Cont. //******************************************************* // PrimePanel.java // 사용자로부터 입력받은 수까지의 모든 소수를 보여주는 프로그램을 보여준다. import java.awt.*; import java.awt.event.*; import javax.swing.*; public class PrimePanel extends JPanel { private JTextField number; private JButton computeButton; private JTextArea primeList; //---------------------------------------------------------------- // 패널은 헤딩, 텍스트 필드, 버튼, 결과를 보여줄 텍스트 영역을 // 포함한다. public PrimePanel() JLabel heading = new JLabel ("Prime Number Listing"); heading.setFont (new Font("Helvetica", Font.BOLD, 30));

소수 리스트 Cont. JLabel inputLabel = new JLabel ("Enter a number : "); number = new JTextField(8); computeButton = new JButton ("Click to see all primes up to your number!"); primeList = new JTextArea(10, 30); computeButton.addActionListener(new ButtonListener()); add(heading); add(inputLabel); add(number); add(computeButton); add(primeList); setPreferredSize (new Dimension(400, 320)); setBackground (Color.yellow); } // 버튼의 감청자를 표현한다. public class ButtonListener implements ActionListener { // 버튼을 클릭했을 때 소수의 리스트를 생성하여 보여준다. public void actionPerformed(ActionEvent event) String textNum = number.getText(); int num = Integer.parseInt(textNum); String ans = ""; int count = 0;

소수 리스트 Cont. if (num < 2) ans = "There no primes less than " + num; else { ans = " " + 2; count++; for (int i = 3; i <= num; i += 2) boolean foundDivisor = false; int j = 3; while (j < i && !foundDivisor) if (i % j == 0) foundDivisor = true; else j++; } if (j == i) ans += " " + i; if (count % 10 == 0) ans += "\n"; primeList.setText (ans);