Presentation is loading. Please wait.

Presentation is loading. Please wait.

10장 예외 Lab 10-2.

Similar presentations


Presentation on theme: "10장 예외 Lab 10-2."— Presentation transcript:

1 10장 예외 Lab 10-2

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

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

4 움직이는 원 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); }

5 움직이는 원 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;

6 움직이는 원 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"); }

7 움직이는 원 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;

8 움직이는 원 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();

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

10 통화 환전 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); }

11 통화 환전 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));

12 통화 환전 Cont. // 통화 변환을 위한 배열을 구성한다.
currencyName = new String[] {"Select the currency..", "European Euro","Canadian Dollar", "Jpanese Yen", "Australian Dollar", "Indian Rupee", "Mexican Peso"}; rate = new double[] {0.0, , , , , , }; 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");

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

14 소수 리스트 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); }

15 소수 리스트 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));

16 소수 리스트 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;

17 소수 리스트 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);


Download ppt "10장 예외 Lab 10-2."

Similar presentations


Ads by Google