Java 피자 주문…(복잡)

처음 이 문제를 봤을 때는 그런 생각이 안 들었는데,

하다 보니까 이걸 만약 for문을 이용해서 푼다면 어떻게 될까? 하면서 한 번…

package wed160525; 
 
import javax.swing.*; 
import javax.swing.border.Border; 
import java.awt.*; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
 
/** 
 * Created on 2016-05-29. 
 */ 
public class pizza extends JFrame implements ActionListener{ 
    private JLabel label = new JLabel("자바 피자에 오신 것을 환영합니다."); 
    private JButton button1 = new JButton("확인"); 
    private JButton button2 = new JButton("취소"); 
    private JPanel panel = new JPanel(); 
    private JPanel p[] = new JPanel[5]; 
    private JPanel southPanel1 = new JPanel(); 
    private JPanel southPanel2 = new JPanel(); 
    private int count = 0; 
    private int count2 = 0; 
    private String str[] = { 
            "콤보","포테이토","불고기", 
            "Small","Medium","Large", 
    }; 
    private String str2[] = { 
            "종류", "추가 토핑","크기" 
    }; 
    private String str3[] = { 
            "피망", "치즈", "페페로니", "베이컨" 
    }; 
    private JTextField tf = new JTextField(10); 
    private JRadioButton btn[] = new JRadioButton[6]; 
    private JCheckBox boxes[] = new JCheckBox[4]; 
    private ButtonGroup group1 = new ButtonGroup(); 
    private ButtonGroup group2 = new ButtonGroup(); 
 
    private pizza() { 
        this.setTitle("피자 주문"); 
        this.setSize(450,300); 
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
 
        panel.setLayout(new BorderLayout()); 
 
        for(int i = 0; i <= 5; i++) { 
            btn[i] = new JRadioButton(str[i]); 
            if(i <= 2) { 
                group1.add(btn[i]); 
            } 
            else { 
                group2.add(btn[i]); 
            } 
        } 
 
        for(int i = 0; i <= 4 ; i++) { 
            p[i] = new JPanel(); 
        } 
        for(int i = 0; i <= 3 ; i++) { 
            boxes[i] = new JCheckBox(str3[i]); 
            p[2].add(boxes[i]); 
        } 
        label.setForeground(Color.red); 
        p[0].add(label); 
 
        p[1].setLayout(new GridLayout(3,1)); 
        p[2].setLayout(new GridLayout(4,1)); 
        p[3].setLayout(new GridLayout(3,1)); 
 
        for(int i = 1; i <= 3; i+=2) { 
            for(int j = 0; j < 3; j++) { 
                p[i].add(btn[count]); 
                count++; 
            } 
        } 
 
        for(int i = 1; i <= 3; i++) { 
            Border border = BorderFactory.createTitledBorder(str2[i-1]); 
            p[i].setBorder(border); 
        } 
 
        p[4].setLayout(new GridLayout(2,1)); 
 
        tf.setEditable(false); 
 
        button1.addActionListener(this); 
        button2.addActionListener(this); 
 
        southPanel2.add(button1); 
        southPanel2.add(button2); 
 
        p[4].add(tf); 
        p[4].add(southPanel2); 
 
        panel.add(p[0], BorderLayout.NORTH); 
        panel.add(p[1], BorderLayout.WEST); 
        panel.add(p[2], BorderLayout.CENTER); 
        panel.add(p[3], BorderLayout.EAST); 
        panel.add(p[4], BorderLayout.SOUTH); 
 
        this.add(panel); 
        this.setVisible(true); 
    } 
 
    public static void main(String[] args) { 
        new pizza(); 
    } 
 
    @Override 
    public void actionPerformed(ActionEvent e) { 
        String radio1 = ""; 
        String radio2 = ""; 
        String boxesChecked = ""; 
        if(e.getSource() == button1) { 
            for(int i = 0; i <= 5; i++) { 
                if(i <= 3) { 
                    if(boxes[i].isSelected()) { 
                        boxesChecked += boxes[i].getText() + " "; 
                    } 
                } 
                if(btn[i].isSelected() && i <= 2) { 
                    radio1 = btn[i].getText(); 
                } 
                else if(btn[i].isSelected()) { 
                    radio2 = btn[i].getText(); 
                } 
            } 
            tf.setText(radio1 + " " + boxesChecked + " " + radio2 + ": 피자 준비 완료"); 
        } 
        else if(e.getSource() == button2) { 
            tf.setText(""); 
 
            for(int i = 0; i <= 3; i++) 
                boxes[i].setSelected(false); 
 
            group1.clearSelection(); 
            group2.clearSelection(); 
 
        } 
    } 
} 

 

Java gui 제곱 계산 프로그램

예외처리는 되어있지 않습니다.

package tue160531; 
 
import javax.swing.*; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
 
/** 
 * Created on 2016-05-31. 
 */ 
public class dual extends JFrame { 
    private JPanel panel; 
    private JLabel label1; 
    private JLabel label2; 
    private JTextField tf1; 
    private JTextField tf2; 
    private JButton button; 
    private dual() { 
        this.setSize(300,200); 
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
        this.setTitle("제곱 계산하기"); 
         
        panel = new JPanel(); 
        label1 = new JLabel("숫자 입력:"); 
        tf1 = new JTextField(15); 
        label2 = new JLabel("제곱한 값:"); 
        tf2 = new JTextField(15); 
        button = new JButton("OK"); 
 
        tf2.setEditable(false); 
        panel.add(label1); 
        panel.add(tf1); 
        panel.add(label2); 
        panel.add(tf2); 
 
        button.addActionListener(new ActionListener() { 
            @Override 
            public void actionPerformed(ActionEvent e) { 
                if(e.getSource() == button) { 
                    int value = Integer.parseInt(tf1.getText()); 
                    tf2.setText(Integer.toString(value*value)); 
                } 
            } 
        }); 
        panel.add(button); 
 
        this.add(panel); 
        this.setVisible(true); 
 
    } 
 
    public static void main(String[] args) { 
        new dual(); 
    } 
}

 

Java 직접 만든 계산기 GUI

직접 만든 계산기입니다.

package tue160524; 
 
import javax.swing.*; 
import java.awt.*; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
 
 
/** 
 * Created on 2016-05-24. 
 * 계산기 예제!! 
 */ 
public class calculator extends JFrame implements ActionListener{ 
    private JPanel panel; 
    private JTextField tField; 
    private JButton[] buttons; 
    private String[] labels = {"7", "8", "9", "+", "4", "5", "6", "-", "1", "2", "3", "*", "0", "CE", "=", "/"}; 
 
    public calculator() { 
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
        this.setTitle("계산기"); 
        this.setSize(300,200); //?? grid layout때문인진 몰라도 크기 조절이 안 됨. 
 
        tField = new JTextField(12); 
        panel = new JPanel(); 
        tField.setText("0"); 
        /*tField.setEnabled(false);*/ 
        panel.setLayout(new GridLayout(0, 4, 4, 4)); 
        buttons = new JButton[16]; //버튼은 총 16개. 
        int index = 0; 
        for (int rows = 0; rows < 4; rows++) { 
            for (int cols = 0; cols < 4; cols++) { 
                buttons[index] = new JButton(labels[index]);//버튼의 레이블은 String lables에서 받아옴 
                buttons[index].addActionListener(this); //버튼마다 액션리스너 
 
                if (cols >= 3) 
                    buttons[index].setForeground(Color.red); 
                else 
                    buttons[index].setForeground(Color.blue); 
 
                buttons[index].setBackground(Color.yellow); 
                panel.add(buttons[index]); 
                index++; 
            } 
        } 
        add(tField, BorderLayout.NORTH); 
        add(panel, BorderLayout.CENTER); 
        setVisible(true); 
        pack(); 
    } 
 
    public static boolean isNumeric(String str) //이 String형이 숫자로 쓸 수 있는지 판단하는 메소드 
    { 
        try 
        { 
            double d = Double.parseDouble(str); //String을 double형으로 선언을 시도 
        } 
        catch(NumberFormatException nfe) 
        { 
            return false; //오류 발생시 숫자가 아님 
        } 
        return true; 
    } 
 
    protected void calculateInit() { //action performed에서 사용하는 변수들 한번에 초기화하는 메소드 
        tempName = ""; 
        tempString = ""; 
        tempNum1 = 0; 
        tempNum2 = ""; 
        is_ready = false; 
        who = ""; 
    } 
 
    private String tempName; 
    private String tempString; 
    private int tempNum1 = 0; 
    private String tempNum2 = ""; 
    private boolean is_ready = false; 
    private String who = ""; //action performed에서 사용 할 변수들 선언 
    //내부에 선언 시 이벤트 발생 시마다 초기화되는 문제점 생김. 
 
    public void actionPerformed(ActionEvent e) { 
        try { 
            tempName = e.getActionCommand(); //버튼 이름불러오기 
            if (tempName.equals("CE")) { //사용자가 누른 버튼의 이름이 CE일 경우(CE 버튼을 눌렀을 경우) 
 
                tField.setText(""); //tField를 다 날리고 
                return; //메소드를 그대로 종료시킨다. (더이상 진행할 필요 없음.) 
                //void형일지라도 return 사용 가능!! (값이 있어선 안 되며, 메소드 종료용으로 사용) 
            } 
            tempString = tField.getText(); //여태까지 tField에 적힌 텍스트를 받아옴 
 
            if (tempString.equals("0")) 
                tempString = ""; 
            //해당 작업이 단순해 보여도 생각보다 유용함.(버튼을 눌렀을 때 텍스트필드에 0뿐이라면 그 0을 지워버림) 
            //그렇지 않으면 05+5처럼 출력될 것. 
 
            if ((tempName.equals("+") || tempName.equals("-") || tempName.equals("*") || tempName.equals("/")) && !is_ready) { 
                //사칙연산에 사용될 버튼들이면서 is_ready라는 불리언값이 false일 경우. 
                tempNum1 = Integer.parseInt(tempString); 
                //tempNum1에서는 tempString, 즉 여태까지 tField에 올라온 모든 숫자를 그대로 가져감. 
                is_ready = true; 
                //is_ready를 true로 함. 
                //is_ready의 목적은 사칙연산 중 앞의 숫자와 뒤의 숫자를 구분하기 위하여 사용 
                //예) 
                //50+30 일 경우 
                //50과 30을 구분하기 위하여 사용함. 
 
                who = tempName; 
                //who의 경우 사칙연산 중 어떤 사칙연산이 사용되었는지 저장함. 
                //예) 
                //50+30의 경우 
                //+를 저장함. 
                //tempName의 경우 누르는 버튼의 이름을 매번 저장함. 
 
                tField.setText(tempString + tempName); 
                //tField에 여태까지 적힌 내용과 방금 누른 버튼을 적음. 
            } else if (tempName.equals("=") && is_ready && !tempNum2.equals("")) { 
                // =버튼을 눌렀고 is_ready가 true이며 tempNum2가 공백이 아닐경우. 
                int temp = Integer.parseInt(tempNum2); 
                tField.setText(Integer.toString(Calculate(tempNum1, temp, who))); 
                //Calculate 메소드의 값을 tField에 넣는다. 
                calculateInit(); 
            } 
            else if(tempName.equals("=") && (!is_ready || tempNum2.equals(""))) { 
                // =버튼은 눌렀으나 
                // is_ready가 true가 아닐 경우 혹은 tempNum2 (오른쪽 피연산자)가 공백일경우 
                // 아무것도 하지 않는다! 
            } 
            else { 
                //그게 아니라면 누른 버튼을 해당에 같이 출력한다. 
                //(원래있던 내용 + 방금누른 버튼) 
                tField.setText(tempString + tempName); 
            } 
 
            if(is_ready && isNumeric(tempName)) { 
                //is_ready가 true면서 (연산자가 준비되었으며) 
                //방금 누른 버튼이 숫자일경우 
                tempNum2 += tempName; 
 
                //String형 tempNum2에 방금 누른 버튼을 더한다. 
                //tempNum2가 int가 아닌 이유이기도 하다. 
                //int일 경우 다른 값이 대입이 된다. 
                //예) 
                //tempNum2가 1이고 tempName이 2일경우 
                //tempNum2 += tempName를 하면 
                //tempNum2는 3이 된다. (여기서 원하는건 12) 
            } 
        } 
        catch (Exception ex) { 
            tField.setText(""); //오류나면 초기화!! 
            calculateInit(); 
        } 
 
    } 
    protected int Calculate(int a, int b, String s) { //세 가지를 받고 
        switch(s) { //String s에따라 다르게 반환 
            //실질적인 계산은 여기에서 나오게 된다. 
            case "+": 
                return a+b; 
            case "-": 
                return a-b; 
            case "*": 
                return a*b; 
            case "/": 
                return a/b; 
            default: 
                return -1; 
        } 
    } 
 
    public static void main(String[] args) { 
        new calculator(); 
    } 
}

Java 이자 계산 프로그램

이자 계산하는 GUI 프로그램입니다.

package tue160524; 
 
import javax.swing.*; 
import java.awt.*; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
 
/** 
 * Created on 2016-05-24. 
 * 이자계산프로그램 
 */ 
public class interest extends JFrame{ 
    private JLabel label1; 
    private JLabel label2; 
    private JTextField field1; 
    private JTextField field2; 
    private JButton button; 
    private JTextField resultField; 
    private JPanel panel = new JPanel(); 
    private JPanel panel1 = new JPanel(); 
    private JPanel panel2 = new JPanel(); 
    private JPanel panel3 = new JPanel(); 
 
    private interest() { 
        this.setSize(300,200); 
        this.setTitle("이자 계산기"); 
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
        panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); 
        //boxLayout을 사용하면 원하는 레이아웃을 쉽게 만들 수 있음. 
 
        panel1.add(label1 = new JLabel("원금을 입력하시오")); 
        panel1.add(field1 = new JTextField(7)); 
        panel1.add(label2 = new JLabel("이율을 입력하시오")); 
        panel1.add(field2 = new JTextField(7)); 
        panel2.add(button = new JButton("변환")); 
        //첫 번째 패널엔 원율/이율 입력 레이블과 텍스트필드를, 
        //두 번째 패널엔 버튼을 각각 add시킨다. 
 
        resultField = new JTextField(20); 
        resultField.setEditable(false); 
        panel3.add(resultField); 
        //마지막으로 결과를 보여 줄 텍스트필드를 세 번째 패널에 추가시킨다. 
 
        button.addActionListener(new ActionListener() { 
            @Override 
            public void actionPerformed(ActionEvent e) { 
                if(e.getSource() == button) { 
                    float result = Integer.parseInt(field1.getText()) * Float.parseFloat(field2.getText()) / 100; 
                    //각 텍스트필드의 값을 불러내어 계산시킨 후 
                    resultField.setText("이자는 연 " + (int)result + "만원 입니다."); 
                    //결과 텍스트필드에 올려준다. (int)를 사용한 이유는 소수점을 버리려고.. 
                } 
            } 
        }); 
 
        panel.add(panel1); 
        panel.add(panel2); 
        panel.add(panel3); 
        //panel은 boxLayout으로 준비되어있으므로 
        //원하는 레이아웃(차곡차곡!)이 나올 것. 
 
        this.add(panel); 
        this.setVisible(true); 
    } 
 
    public static void main(String[] args) { 
        new interest(); 
    } 
} 

Java 마일>킬로미터 환산

마일을 킬로미터로 변환시켜주는 GUI 예제입니다.

package tue160524; 
 
import javax.swing.*; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
 
/** 
 * Created on 2016-05-24. 
 * 마일>킬로미터 환산. 
 */ 
public class miletokilo extends JFrame { 
    private JTextField textField; 
    private JButton button; 
    private JTextField resultField; 
    private JLabel label; 
    private JPanel panel; 
    miletokilo() { 
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
        this.setTitle("마일을 킬로미터로 변환"); 
        panel = new JPanel(); 
        this.setSize(300,200); 
        panel.add(label = new JLabel("거리를 마일 단위로 입력하시오")); 
        panel.add(textField = new JTextField(5)); 
        panel.add(button = new JButton("변환")); 
        resultField = new JTextField(20); 
        resultField.setEditable(false); 
        //결과 텍스트필드는 건들지 못하게 막음. 
        panel.add(resultField); 
 
        this.add(panel); 
 
        this.setVisible(true); 
 
        button.addActionListener(new ActionListener() { 
            @Override 
            public void actionPerformed(ActionEvent e) { 
                if(e.getSource() == button) { 
                    double mile = Double.parseDouble(textField.getText()); 
                    resultField.setText((int)mile + "마일은 "+Double.toString(mile*1.609344) + "킬로미터 입니다."); 
                    //결과 텍스트필드의 값을 설정해 줌. 
                } 
            } 
        }); 
    } 
 
    public static void main(String[] args) { 
        new miletokilo(); 
    } 
} 

Java 레이블 위 커서시 내용 변경

제목은 거창하지만 하는 일은 여태 하던 일과 다를 바 없습니다.

package tue160524; 
 
import javax.swing.*; 
import java.awt.*; 
import java.awt.event.MouseAdapter; 
import java.awt.event.MouseEvent; 
 
/** 
 * Created on 2016-05-24. 
 * 마우스 레이블 예제. 
 */ 
public class mouseLabel extends JFrame { 
    private Font font; //글씨체는 Font에서 담당!! 
    private JLabel label; 
    private JPanel panel; 
 
    private mouseLabel() { 
        this.setSize(800,200); 
        panel = new JPanel(); 
 
        font = new Font("Serif", Font.ITALIC, 50); 
        label = new JLabel("Don't Cry before you are hurt"); //기본 레이블은 영어로. 
        label.setFont(font); 
 
        panel.add(label); 
        label.addMouseListener(new mouseAdapter()); 
 
        this.add(panel); 
        this.setVisible(true); 
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    } 
 
    private class mouseAdapter extends MouseAdapter { 
        public void mouseEntered(MouseEvent e) { 
            //마우스가 들어왔을 경우!! 
            label.setText("다치기도 전에 울지 말라"); 
            //레이블의 텍스트만 바꿔준다 
        } 
        public void mouseExited(MouseEvent e) { 
            label.setText("Don't Cry before you are hurt"); 
        } 
        //다시 나가면 영어로 돌려놓는다. 
    } 
 
    public static void main(String[] args) { 
        new mouseLabel(); 
    } 
} 

Java 이벤트리스너와 페인트

저번에는 키보드/마우스 이벤트로 상자를 움직였다면 이번에는 버튼 이벤트로 상자를 움직이는 예제입니다.

package tue160524; 
 
import javax.swing.*; 
import java.awt.*; 
import java.awt.Graphics; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
 
import static java.awt.Color.red; 
import static java.awt.Color.yellow; 
 
/** 
 * Created on 2016-05-24. 
 * 상자 출력 
 */ 
public class movingbox extends JPanel implements ActionListener { 
    private JPanel panel1 = new JPanel(); 
    private JButton leftButton = new JButton("왼쪽으로 이동"); 
    private JButton rightButton = new JButton("오른쪽으로 이동"); 
 
    private int squareX = 50; 
    private int squareY = 50; 
    private int squareW = 20; 
    private int squareH = 100; 
 
    movingbox() { 
        this.setLayout(new BorderLayout()); //JPanel을 상속받았으므로 그 자체가 Panel임. 
        //해당 패널(자기 자신, movingbox)의 레이아웃을 BorderLayout으로 설정. 
 
        panel1.add(leftButton); 
        panel1.add(rightButton); 
 
        this.add(panel1, BorderLayout.SOUTH); //패널을 BorderLayout을 사용해 밑으로 내려버림 
 
        leftButton.addActionListener(this); 
        rightButton.addActionListener(this); 
    } 
 
    public void paintComponent(Graphics g) { 
        super.paintComponent(g); 
        g.setColor(yellow); //배경색 YELLOW 
        g.fillRect(0,0,400,300); 
        g.setColor(red); //도형색 RED 
        g.fillRect(squareX,squareY,squareW,squareH); //도형 그리기!! 
 
    } 
 
    public void actionPerformed(ActionEvent e) { 
        if(e.getSource() == leftButton) { 
            //레프트버튼을 누르면 X값 - 10 
            squareX -= 10; 
            repaint(); 
            //다시 그림! 
        } 
        else if (e.getSource() == rightButton) { 
            //라이트버튼을 누르면 X값 + 10 
            squareX += 10; 
            repaint(); 
        } 
    } 
} 
 
class frame extends JFrame { 
    frame() { 
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
        this.setSize(400,300); 
        this.add(new movingbox()); 
        this.setVisible(true); 
    } 
 
    public static void main(String[] args) { 
        new frame(); 
    } 
} 

Java 체크박스 예제

자바에서도 HTML에서 자주 보던 체크박스를 사용할 수 있습니다.

package wed160525; 
 
import java.awt.*; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.applet.Applet; 
 
import javax.swing.*; 
 
class MyFrame extends JFrame implements ActionListener { 
 
  private JButton buttonOK; 
  private JCheckBox onion, cheese, tomato; 
 
  protected MyFrame() { 
    setTitle("체크박스 테스트"); 
    setSize(300, 130); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
 
    JLabel label = new JLabel("햄버거에 무엇을 추가하시겠습니까?"); 
    JPanel topPanel = new JPanel(); 
    topPanel.add(label); 
    add(topPanel, BorderLayout.NORTH); 
 
    // 체크 박스 생성 및 추가 
    JPanel panel = new JPanel(); 
    onion = new JCheckBox("양파"); 
    panel.add(onion); 
    cheese = new JCheckBox("치즈"); 
    panel.add(cheese); 
    tomato = new JCheckBox("토마토"); 
    panel.add(tomato); 
    add(panel, BorderLayout.CENTER); 
 
    // 버튼 생성 및 추가 
    buttonOK = new JButton("OK"); 
    JPanel bottomPanel = new JPanel(); 
    bottomPanel.add(buttonOK); 
    add(bottomPanel, BorderLayout.SOUTH); 
    buttonOK.addActionListener(this); 
 
    setVisible(true); 
  } 
 
  public void actionPerformed(ActionEvent e) { 
    if (e.getSource() == buttonOK) { 
      String msg = ""; 
      if (onion.isSelected()) 
        msg += "양파
"; 
      if (cheese.isSelected()) 
        msg += " 치즈"; 
      if (tomato.isSelected()) 
        msg += " 토마토"; 
      msg = "선택한 옵션은 다음과 같습니다.
 " + msg; 
      System.out.println(msg); 
      onion.setSelected(false); 
      cheese.setSelected(false); 
      tomato.setSelected(false); 
    } 
  } 
} 
 
public class CheckBoxTest extends JFrame { 
  public static void main(String[] args) { 
    new MyFrame(); 
  } 
 
} 

Java 이미지 레이블

이미지 레이블 예제입니다.

package wed160525; 
 
import javax.swing.*; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
 
/** 
 * Created on 2016-05-25. 
 */ 
public class ImageLabelTest extends JFrame implements ActionListener { 
    private JPanel panel; 
    private JLabel label; 
    private JButton button; 
 
    private ImageLabelTest() { 
        setTitle("이미지 레이블"); 
        setSize(300,250); 
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
 
        panel = new JPanel(); 
        label = new JLabel("이미지를 보려면 아래" + 
                "버튼을 누르세요"); 
 
        button = new JButton("이미지 레이블"); 
        ImageIcon icon = new ImageIcon("icon.gif"); 
        button.setIcon(icon); 
        button.addActionListener(this); 
        panel.add(label); 
        panel.add(button); 
 
        add(panel); 
        setVisible(true); 
    } 
 
    public static void main(String[] args) { 
        new ImageLabelTest(); 
    } 
 
    public void actionPerformed(ActionEvent e) { 
        ImageIcon dog = new ImageIcon("dog.gif"); 
        label.setIcon(dog); 
        label.setText(null); 
    } 
} 

Java 덧셈 프로그램

실력 테스트 겸으로 하신 문제입니다.

package wed160525; 
 
import javax.swing.*; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
 
/** 
 * Created on 2016-05-25. 
 */ 
public class plus extends JFrame{ 
    private JTextField fieldOne = new JTextField(5), /*  텍스트필드 생성 및 초기화 */ 
            fieldTwo = new JTextField(5), 
            fieldThree = new JTextField(5), 
            fieldResult = new JTextField(20); 
    private JLabel labelPlus = new JLabel("+"), /* 레이블 생성 및 초기화 */ 
            labelEqual = new JLabel("="); 
    private JButton button = new JButton("확인"); // 버튼 생성 및 초기화 
    private JPanel panel = new JPanel(), //패널 생성 및 초기화 (panel은 전체패널) 
            panel2 = new JPanel(),//패널1, 2, 3 
            panel3 = new JPanel(), 
            panel1 = new JPanel(); 
    private plus() { 
        panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); //전체 패널의 레이아웃을 박스레이아웃으로 사용 
        panel1.add(fieldOne); 
        panel1.add(labelPlus); 
        panel1.add(fieldTwo); 
        panel1.add(labelEqual); 
        panel1.add(fieldThree); //각각 하나씩 추가 
 
        button.addActionListener(new ActionListener() { 
            @Override 
            public void actionPerformed(ActionEvent e) { 
                try { 
                    int result = Integer.parseInt(fieldThree.getText()); 
                    int one = Integer.parseInt(fieldOne.getText()); 
                    int two = Integer.parseInt(fieldTwo.getText()); 
                    if (e.getSource() == button) { 
                        if (one + two == result) { 
                            fieldResult.setText("결과가 맞습니다."); 
                        } else { 
                            fieldResult.setText("결과가 틀립니다."); 
                        } 
                    } 
                } 
                catch (NumberFormatException nfe) { //예외처리 
                    fieldResult.setText("오류 발생!!!!!"); 
                    fieldOne.setText(""); 
                    fieldTwo.setText(""); 
                    fieldThree.setText(""); 
                } 
            } 
        }); 
        panel2.add(button); //버튼 panel2에 추가 
 
        fieldResult.setEditable(false); //수정 못하게 막음 
        panel3.add(fieldResult); //패널3에 추가 
 
        panel.add(panel1); //패널 각각 추가 
        panel.add(panel2); 
        panel.add(panel3); 
 
        this.add(panel); //전체패널 추가 
 
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //종료시 행동 설정 
        this.setSize(300,200); //사이즈 설정 
        this.setTitle("더하기 프로그램"); //타이틀 설정 
 
        this.setVisible(true); //보여지도록 설정 
    } 
 
    public static void main(String[] args) { 
        new plus(); //무명으로 불러냄 
    } 
}