제 4 장 클래스 작성 Lab 4- 2
Contents GUI - 그래픽 객체 GUI – Button GUI - Textfield
GUI – 그래픽 객체 Square class를 작성하라. Constructor instance 변수 parameter 없음. size, (x, y), color 값 : 무작위 생성. - 100 ≤ size ≤200 - 0 ≤ x ≤ 600, 0 ≤ y ≤ 400 - color : Color Construcor에 parameter 1개 전달. instance 변수 size : 한 변 길이 (x, y) 좌표 : 사각형 왼쪽 위 color
GUI – 그래픽 객체 Cont. Method Class level에서 random generator 정의. Constructor 안에 생성하면 안됨!! static으로 선언. Data 선언부에 함께 선언. 예) private static Random generator = new Random(); draw() : 사각형을 그림. Graphic 객체 parameter로 사용. - paint()의 page와 유사.
GUI – 그래픽 객체 Cont. 애플릿 DrawSquares를 작성하라. Square class를 이용하여 사각형 5개를 생성하고 그림. paint() : 사각형 5개를 생성, 그림. 주의 : draw()에 Graphic 객체를 전달한다.
참고] 4.10, 4.11 – PushCounter.java, PushCounterPanel.java GUI – Button VoteCounter.java와 VoteCounterPane.java를 수정해보자. 후보자 1명을 추가한다. – for Sam Sam을 위한 변수 추가 - vote counter, button, label Sam을 위한 내부 class, SamButtonListener 추가 Sam button을 눌렀을 때 반응하는 listener. ActionListener를 추가할 때, class instance 생성. panel에 Sam의 button과 label을 추가 참고] 4.10, 4.11 – PushCounter.java, PushCounterPanel.java
GUI – Textfield BMI.java , BMIPanel.java // ************************************************************* // BMI.java // // BMI(body mass index)를 계산하기 위한 GUI를 구성한다. import javax.swing.JFrame; public class BMI { // --------------------------------------------------------- // BMI GUI를 생성하고 보여준다. public static void main(String[] args) JFrame frame = new JFrame ("BMI"); frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); BMIPanel panel = new BMIPanel; frame.getContentPanel().add(panel); frame.pack(); frame.setVisible (true); }
// ************************************************************* // BMIPanel.java // // GUI에서 BMI를 계산한다. import java.awt.*; import java.awt.event.*; import javax.swing.*; public class BMIPanel extends JPanel { private int WIDTH = 300; private int HEIGHT = 120; private JPanel heightLabel, weightLabel, BMILabel, resultLabel; private JTextFied height, weight; private JButton calculate; // --------------------------------------------------------- // GUI를 구성한다. public BMI() // textfield (height와 weight)의 label 생성 heightLabel = new JLabel ("Your height in meters : "); weightLabel = new JLabel ("Your weight in kilograms : ");
// "this is your BMI" label 생성 // height을 입력받을 JTextField 생성 // weight을 입력받을 JTextField 생성 // BMI를 계산할 button 생성 // button을 눌렀을 때 대응하는 BMIListener 생성 // panel에 height label과 height textfield를 추가 // panel에 weight label과 weight textfield를 추가 // panel에 button 추가 // panel에 BMI label 추가 // panel에 BMI결과를 나타내는 label 추가 // panel의 크기 지정 // panel의 색 지정 }
// ********************************************************* // 계산 button의 action listener를 나타낸다. private class BMIListener implements ActionListener { // ----------------------------------------------------- // button을 눌렀을 때 BMI 계산 public void actionPerformed (ActionEvent event) String heightText, weightText; int heightVal, weightVal; double bmi; // textfield(height, weight)에서 text를 가지고 온다. // Integer.parseInt를 이용하여 text를 int로 형변환한다. // BMI 계산 : 체중 / 신장 / 신장 or 체중 / 신장2 // 결과 label에 BMI 결과를 나타낸다. Double.toString을 사용하여 string으로 형변환한다. }
참고] 4.12, 4.13 – Fahrenheit.java, FahrenheitPanel.java GUI – Textfield BMI 프로그램을 완성해보자. BMI(Body Mass Index) 신체질량지수 – 비만도 측정에 사용. 계산법 : 체중(Kg) / 신장2 (m2) 25이상이면 비만 1단계. 주석의 설명에 따라 프로그램을 완성해보자. 참고] 4.12, 4.13 – Fahrenheit.java, FahrenheitPanel.java