1.
import java.awt.event.*;
import javax.swing.*;
class Myframe extends JFrame
{
JButton button;
JTextField t1;
JTextField t2;
public Myframe()
{
setSize(250,120);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("마일을 킬로미터로 변환");
JPanel panel1=new JPanel();
JLabel label=new JLabel("거리를 마일 단위로 입력하시오");
t1=new JTextField(5);
t2=new JTextField(20);
button=new JButton("변환");
button.addActionListener(new MyListener());
t1.setText("1");
t2.setEditable(false);
panel1.add(label);
panel1.add(t1);
panel1.add(button);
panel1.add(t2);
this.add(panel1);
setVisible(true);
}
private class MyListener implements ActionListener{
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==button)
{
int t=Integer.parseInt(t1.getText());
double k=t*1.609344;
t2.setText(t+" 마일은 "+k+" 킬로미터입니다.");
}
}
}
}
public class Pro1 {
public static void main(String[] arge)
{
Myframe f=new Myframe();
}
}
2.
import java.awt.event.*;
import javax.swing.*;
class Myframe extends JFrame
{
JButton button;
JTextField t1;
JTextField t2;
JTextField t3;
public Myframe()
{
setSize(230,150);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("이자 계산기");
JPanel panel1=new JPanel();
JLabel label1=new JLabel("원금을 입력하시오");
JLabel label2=new JLabel("이율을 입력하시오");
t1=new JTextField(5);
t2=new JTextField(5);
t3=new JTextField(15);
button=new JButton("변환");
button.addActionListener(new MyListener());
t3.setEditable(false);
panel1.add(label1);
panel1.add(t1);
panel1.add(label2);
panel1.add(t2);
panel1.add(button);
panel1.add(t3);
this.add(panel1);
setVisible(true);
}
private class MyListener implements ActionListener{
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==button)
{
int t=Integer.parseInt(t1.getText());
float a=Float.parseFloat(t2.getText());
int k=(int)(t*(a/100));
t3.setText("이자는 연 "+k+"만원 입니다.");
}
}
}
}
public class Pro2 {
public static void main(String[] arge)
{
Myframe f=new Myframe();
}
}
3.
//이항 연산을 표현하는 클래스
public class DyadicOperation {
private double operandX;
private double operandY;
private char operator;
//생성자
public DyadicOperation(){
init();
}
//초기화
public void init(){
setOperandX(0);
setOperandY(0);
setOperator('=');
}
//접근자
public double getOperandX() {return operandX;}
public double getOperandY() {return operandY;}
public char getOperator() {return operator;}
//설정자
public void setOperandX(double operandX) {this.operandX = operandX;}
public void setOperandY(double operandY) {this.operandY = operandY;}
public void setOperator(char operator) {this.operator = operator;}
//식 입력(피연산자 일때)
public void inputFomula(double operand){
if(operator == '='){
setOperandX(operand);
setOperandY(operand);
}
else{
setOperandY(operand);
}
}
//식 입력(연산자 일때)
public boolean inputFomula(char operator){
if(operator != '=' && operator != '%'){
if(getOperator() != '='){
calculate();
setOperator(operator);
return true;
}
else{
setOperator(operator);
return false;
}
}
else if(operator == '=' && getOperator() != '='){
calculate();
return true;
}
else if(operator == '%' && getOperator() == '*'){
setOperandX(getOperandX()*getOperandY()*0.01);
return true;
}
return false;
}
//연산
public void calculate(){
switch(getOperator()){
case '+':
setOperandX(getOperandX() + getOperandY());
break;
case '-':
setOperandX(getOperandX() - getOperandY());
break;
case '*':
setOperandX(getOperandX() * getOperandY());
break;
case '/':
setOperandX(getOperandX() / getOperandY());
break;
}
}
}
----------------------------------------------------------------
----------------------------------------------------------------
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
//계산기를 구현 하는 클래스
public class MyCalculator extends JFrame {
private JTextField f;//텍스트 필드
private boolean resultPrint;//결과 출력 상태
private DyadicOperation operation;//이항 연산 클래스
private Real num;//실수
//생성자
public MyCalculator(){
//슈퍼 클래스 생성자 명시적 호출을 통한 프레임 제목 설정
super("MyCalculator");
f = new JTextField("0.");//텍스트 필드
setResultPrint(false);//결과 출력 상태
operation = new DyadicOperation();//이항 연산 클래스
num = new Real();//실수
//메인 패널로 사용할 패널을 생성
JPanel mainPanel = new JPanel();
//flow, border, grid 중 텍스트 필드와 키패널의 비대칭적 크기를 고려해 border 선택
mainPanel.setLayout(new BorderLayout(10,10));
//텍스트 필드 생성 및 추가
f.setHorizontalAlignment(JTextField.RIGHT);
f.setEditable(false);
f.setBackground(Color.WHITE);
mainPanel.add(f,BorderLayout.NORTH);
//키패널 생성 및 추가
JPanel mainKeyPanel = new JPanel();
mainKeyPanel.setLayout(new BorderLayout(10,10));
KeyPanel1 keyPanel1 = new KeyPanel1();
KeyPanel2 keyPanel2 = new KeyPanel2();
mainKeyPanel.add(keyPanel1,BorderLayout.NORTH);
mainKeyPanel.add(keyPanel2,BorderLayout.CENTER);
mainPanel.add(mainKeyPanel,BorderLayout.CENTER);
//메인 패널을 프레임에 추가
add(mainPanel);
//flow, border, grid 중 프레임과 메인 패널 사이에 적절한 공간을 줄 수 있는 flow 선택
setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setResizable(false);
setVisible(true);
}
//키패널 클래스 1
class KeyPanel1extends JPanel{
public KeyPanel1(){
//flow, border, grid 중 버튼 정렬을 하기 가장 적합한 grid 선택
setLayout(new GridLayout(0,3,10,10));
String[] str = new String[] {"Backspace", "CE", "C"};
JButton[] button = new JButton[str.length];
//Backspace, CE, C의 순서로 버튼이 추가 되도록 반복
for(int i=0; i<str.length; i++){
button[i] = new JButton(str[i]);
button[i].setBackground(Color.WHITE);
button[i].setForeground(Color.RED);
add(button[i]);
button[i].addActionListener(new MyActionListener1());
}
}
}
//액션 리스너1 클래스
class MyActionListener1 implements ActionListener{//내부 클래스
@Override
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand()=="C"){//초기화
operation.init();
num.init();
}
else if(e.getActionCommand()=="CE"){//현재 입력한 값 초기화
num.init();
}
else{//BackSpace
num.backSpace();
}
f.setText(num.toString());
}
}
//키패널 클래스 2
class KeyPanel2extends JPanel{//내부 클래스
public KeyPanel2(){//생성자
//flow, border, grid 중 버튼 정렬을 하기 가장 적합한 grid 선택
setLayout(new GridLayout(0,5,10,10));
String[] str = new String[]
{"7", "8", "9", "/", "sqrt", "4", "5", "6", "*", "%",
"1", "2", "3", "-", "1/x", "0", "+/-", ".", "+", "="};
JButton[] button = new JButton[str.length];
//7, 8, 9, /, sqrt,4,5,6,*,%,1,2,3,-,
//1/x, 0, +/-, ., +, =의 순서로 버튼이 추가 되도록 반복
for(int i=0; i<str.length; i++){
button[i] = new JButton(str[i]);
add(button[i]);
button[i].setBackground(Color.WHITE);
button[i].addActionListener(new MyActionListener2());
}
button[3].setForeground(Color.RED);
button[8].setForeground(Color.RED);
button[13].setForeground(Color.RED);
button[18].setForeground(Color.RED);
button[19].setForeground(Color.RED);
}
}
//액션 리스너2 클래스
class MyActionListener2 implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {//내부 클래스
// TODO Auto-generated method stub
String str = e.getActionCommand();
if(str.length() == 1){//단문자 인 경우
switch(str.charAt(0)){
//이항 연산자인 경우
case '/':
case '*':
case '-':
case '+':
case '=':
case '%':
if(num.toString() != "0."){
operation.inputFomula(Double.parseDouble(num.toString()));
}
setResultPrint(operation.inputFomula(str.charAt(0)));
if(isResultPrint()){
num.setReal(operation.getOperandX());
f.setText(num.toString());
}
num.init();
break;
default:
num.inputAppend(str.charAt(0));
f.setText(num.toString());
break;
}
}
else{
if(str == "+/-"){
num.sign();
}
else if(str == "1/x"){
num.inverse();
}
else{
num.sqrt();
}
f.setText(num.toString());
}
}
}
//접근자
public boolean isResultPrint() {return resultPrint;}
//설정자
public void setResultPrint(boolean resultPrint) {this.resultPrint = resultPrint;}
public static void main(String[] args){
MyCalculator c=new MyCalculator();
}
}
4.
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
class MyPanel extends JPanel
{
int x=250, y=30;
public void move(int dx) {
this.x += dx;
repaint();
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
this.setBackground(Color.yellow);
g.setColor(Color.red);
g.fillRect(x, y, 10, 200);
}
}
class Myframe extends JFrame
{
MyPanel panel;
JPanel panel1;
JButton b1, b2;
public Myframe()
{
setSize(500,300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("박스움직이기");
panel=new MyPanel();
panel1=new JPanel();
b1=new JButton("왼쪽으로 이동");
b2=new JButton("오른쪽으로 이동");
panel1.add(b1);
panel1.add(b2);
add(panel, BorderLayout.CENTER);
add(panel1, BorderLayout.SOUTH);
b1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
panel.move(-10);
}});
b2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
panel.move(10);
}});
setVisible(true);
}
}
public class MyFrameTest {
public static void main(String[] arge)
{
Myframe f=new Myframe();
}
}
5.
import java.awt.Font;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
class Myframe extends JFrame
{
JLabel label;
public Myframe()
{
setSize( 700,200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("박스움직이기");
label = new JLabel("Don't cry before you are hurt");
label.setFont(new Font("Serif", Font.BOLD | Font.ITALIC, 50));
label.addMouseListener(new MouseAdapter() {
@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub
super.mouseExited(arg0);
label.setText("Don't cry before you are hurt");
}
public void mouseEntered(MouseEvent arg0) {
label.setText("다치기도 전에 울지말라");
}
});
add(label);
setVisible(true);
}
}
public class MyFrameTest {
public static void main(String[] arge)
{
Myframe f=new Myframe();
}
}
'솔루션모음 > 파워자바 프로그래밍' 카테고리의 다른 글
[파워자바] 20장 프로그래밍 솔루션 답지 (0) | 2023.02.16 |
---|---|
[파워자바] 17장 프로그래밍 솔루션 답지 (0) | 2023.02.16 |
[파워자바] 15장 프로그래밍 솔루션 답지 (0) | 2023.02.16 |
[파워자바] 14장 프로그래밍 솔루션 답지 (0) | 2023.02.15 |
[파워자바] 13장 프로그래밍 솔루션 답지 (0) | 2023.02.15 |
댓글