1. 사칙연산 계산기 어플을 완성시키세요. package practice; import java.awt.BorderLayout; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import java.awt.Color; import javax.swing.JTextField; import javax.swing.JComboBox; import javax.swing.DefaultComboBoxModel; import javax.swing.JTextArea; import javax.swing.JButton; import javax.swing.JLabel; import java.awt.Font; import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class MyFrame01 extends JFrame implements ActionListener{ private JPanel contentPane; // 사용할 틀
private JTextField textfield1; // 텍스트필드 숫자 기입할 1번째 필드 private JTextField textfield2; // 텍스트필드 숫자 기입할 2번째 필드
private JComboBox combo; // 콤보박스에 대한 생성
private JButton calcstart; // 계산 누를 때 버튼 관련 생성 private JButton clear; // 초기화 버튼 누를 때 버튼 생성 관련
private JTextArea result; // 계산한 후 결과 값 나오는 곳.
private String text1, text2, combobuttn;
private int n1, n2, res;
/** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { MyFrame01 frame = new MyFrame01(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public MyFrame01() { setTitle("계산기"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(450, 250, 450, 300); contentPane = new JPanel(); contentPane.setToolTipText(""); contentPane.setBackground(Color.ORANGE); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(null);
textfield1 = new JTextField(); textfield1.setBounds(42, 53, 116, 21); contentPane.add(textfield1); textfield1.setColumns(10);
textfield2 = new JTextField(); textfield2.setBounds(262, 53, 116, 21); contentPane.add(textfield2); textfield2.setColumns(10);
String[] op = {"" ,"+" ,"-" ,"*" ,"/"}; combo = new JComboBox(op); combo.setBounds(184, 82, 43, 21); contentPane.add(combo);
calcstart = new JButton("계산"); calcstart.setBounds(303, 150, 97, 33); contentPane.add(calcstart);
clear = new JButton("초기화"); clear.setBounds(303, 193, 97, 33); contentPane.add(clear);
result = new JTextArea(); result.setFont(new Font("맑은 고딕", Font.BOLD, 15)); result.setBackground(Color.ORANGE); result.setForeground(Color.BLACK); result.setBounds(181, 193, 110, 33); contentPane.add(result);
JLabel lblNewLabel = new JLabel("숫자를 입력해주세요."); lblNewLabel.setFont(new Font("휴먼모음T", Font.PLAIN, 13)); lblNewLabel.setBounds(153, 10, 130, 15); contentPane.add(lblNewLabel);
// 이벤트 감시 하는 부분 calcstart.addActionListener(this); clear.addActionListener(this);
} @Override public void actionPerformed(ActionEvent e) { // 이 부분 전부 이해가 필요합니다.. Object obj = e.getSource(); if(obj == calcstart) { text1 = textfield1.getText().trim(); text2 = textfield2.getText().trim(); combobuttn = (String) combo.getSelectedItem(); // String으로 캐스팅한 것이 이해가 가지않음.
calc(); } else if(obj == clear) { textfield1.setText(""); textfield2.setText(""); result.setText(""); }
}
private void calc() { // 이부분도 이해가 안돼서 도움이 필요합니다. n1 = Integer.parseInt(text1); n2 = Integer.parseInt(text2);
switch (combobuttn.charAt(0)) { case '+' : res = n1 + n2; break; case '-' : res = n1 - n2; break; case '*' : res = n1 * n2; break; case '/' : res = n1 / n2; break; } result.setText(res + ""); }
} 2. 사칙연산 게임 계산기 완성시키세요. package quizframe;
import java.awt.Button; import java.awt.Color; import java.awt.Frame; import java.awt.GridLayout; import java.awt.Panel; import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.util.Random; import java.awt.Font;
public class MyQuiz extends Frame { //멤버변수 private TextField myQuizField; private TextField iptAnswer; private Button startBtn; private TextField resultField; private Button clearBtn; private int rightAnswer;
public static void main(String[] args) { // TODO Auto-generated method stub MyQuiz quiz = new MyQuiz("사칙연산퀴즈"); quiz.setVisible(true); }
private ActionListener textFieldEventHandler = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { String Answer = iptAnswer.getText(); if (Answer.equals(Integer.toString(rightAnswer))) { resultField.setText("정답입니다."); } else { resultField.setText("오답입니다 공부하세요^^7"); } } };
public MyQuiz(String title) { super(title); init(); }
public void set() { int num1 = (int) (Math.random() * 10) + 1; int num2 = (int) (Math.random() * 10) + 1; int i = (int) (Math.random() * 4); String[] op = { "+", "-", "×", "÷" }; int[] result = { num1+num2, num1-num2, num1*num2, num1/num2 }; rightAnswer = result[i];
myQuizField.setText(num1 + " " + op[i] +" " + num2 + " = "); iptAnswer.setText(""); resultField.setText(""); }
public void init() { addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } });
setBounds(650, 350, 386, 322); setBackground(Color.PINK);
myQuizField = new TextField(); myQuizField.setFont(new Font("궁서체", Font.ITALIC, 18)); myQuizField.setBackground(Color.LIGHT_GRAY); startBtn = new Button("Start"); startBtn.setFont(new Font("돋움", Font.BOLD, 14)); startBtn.setBackground(Color.PINK); resultField = new TextField(); resultField.setFont(new Font("궁서체", Font.BOLD, 18)); resultField.setBackground(Color.PINK); iptAnswer = new TextField(); iptAnswer.setFont(new Font("궁서체", Font.BOLD, 16)); iptAnswer.setBackground(Color.LIGHT_GRAY); clearBtn = new Button("Retry"); clearBtn.setFont(new Font("돋움체", Font.BOLD, 16)); clearBtn.setBackground(Color.PINK); set();
Panel p = new Panel(new GridLayout(1, 3));
add(p, "North"); add(resultField, "Center"); add(clearBtn, "South"); p.add(myQuizField); p.add(iptAnswer); p.add(startBtn); startBtn.addActionListener(textFieldEventHandler); clearBtn.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { set(); } }); iptAnswer.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { iptAnswer.setText(""); } }); } } 3. 윈도우 계산기 프로그램을 완성시키세요. |