본문 바로가기
IT/Java

Java GUI (원 넓이 구하기)

by hjshims 2021. 6. 21.

 

 

package p0621combobox;

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.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class ComboBox_Ex<E> extends JFrame {
	JPanel pNorth, pCenter, pSouth;
	JLabel l1, l2;
	JTextField t1, t2;
	JTextArea area;
	JButton cal, reset;
	JComboBox<String> cb;

	ComboBox_Ex() {
		setTitle("원의 넓이 구하기");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(800, 300, 300, 230);

		showNorth();
		showCenter();
		showSouth();
		setVisible(true);
	}

	void showNorth() {
		pNorth = new JPanel();
		pNorth.setLayout(new GridLayout(2, 2));
		l1 = new JLabel("원의 반지름");
		t1 = new JTextField(10);
		l2 = new JLabel("원의 넓이");
		t2 = new JTextField(10);

		pNorth.add(l1);
		pNorth.add(t1);
		pNorth.add(l2);
		pNorth.add(t2);
		add("North", pNorth);
	}

	void showCenter() {
		pCenter = new JPanel();
		area = new JTextArea(30, 20);
		area.setText("반지름을 입력하세요!!!");
		area.setForeground(Color.RED);
		pCenter.add(area);
		add("Center", pCenter);
	}

	void showSouth() {
		pSouth = new JPanel();

		String[] color = { "red", "blue", "green" };
		pSouth = new JPanel(new FlowLayout(FlowLayout.CENTER, 10, 10));

		/* 계산버튼 */
		cal = new JButton("계산");
		cal.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				JButton btn = (JButton) e.getSource();
				if (btn.getText() == "계산") {
					Double r = Double.parseDouble(t1.getText()); // 문자열을 숫자로
					double r2 = r * r * 3.14;
					String str = Double.toString(r2); // 숫자를 문자열로
					t2.setText(str + "");
					area.setText("원의 반지름: " + r + "\n원의 넓이: " + r + "*" + r + "*" + "3.14" + "=" + str);
				}
			}
		});

		/* 콤보박스 */
		cb = new JComboBox<>(color);
		cb.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				String str = (String) cb.getSelectedItem();
				if (str.equals("red")) {
					area.setForeground(Color.red);
				}
				if (str.equals("blue")) {
					area.setForeground(Color.blue);
				}
				if (str.equals("green")) {
					area.setForeground(Color.green);
				}
			}
		});

		/* 리셋버튼 */
		reset = new JButton("리셋");
		reset.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				t1.setText("");
				t2.setText("");
				area.setText("");
			}
		});
		pSouth.add(cal);
		pSouth.add(cb);
		pSouth.add(reset);
		add("South", pSouth);
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new ComboBox_Ex();
	}

}