본문 바로가기

STUDY/국비과정

[JAVA 웹 개발 공부] 국비지원 24일차 - 화면 전환, tabbedPane, ImageIcon, 체크 박스, 라디오 버튼, 피자 메뉴판 만들기

화면 전환하는 창 만들기

 

import java.awt.CardLayout;
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;

class TestCard extends JFrame implements ActionListener {
	private JButton btn1;
	private JButton btn2;
	private CardLayout cardLayout;
	private JPanel pnlCenter;

	public TestCard() {
		JPanel pnlFirst = new JPanel();
		JPanel pnlSecond = new JPanel();
		pnlCenter = new JPanel();
		cardLayout = new CardLayout();
		pnlCenter.setLayout(cardLayout);
		
		JPanel pnlNorth = new JPanel();
		btn1 = new JButton("첫번째 화면 보기");
		btn2 = new JButton("두번째 화면 보기");
		pnlNorth.add(btn1);
		pnlNorth.add(btn2);
		btn1.addActionListener(this);
		btn2.addActionListener(this);
		
		pnlFirst.add(new JLabel("첫번째 화면"));
		pnlSecond.add(new JLabel("두번째 화면"));
		
		pnlCenter.add(pnlFirst, "1st");
		pnlCenter.add(pnlSecond, "2nd");
		
		cardLayout.show(pnlCenter, "1st");
		add(pnlCenter);
		add(pnlNorth, "North");
		
		setSize(500, 500);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
	}
	
	public void showGUI() {
		setVisible(true);
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		Object source = e.getSource();
		if (source == btn1) {
			cardLayout.show(pnlCenter, "1st");
		} else if (source == btn2) {
			cardLayout.show(pnlCenter, "2nd");
		}
	}
}
public class Main {
	public static void main(String[] args) {
		new TestCard().showGUI();
	}
}

 

 

 

tabbedPane 창 만들기

 

import java.awt.Color;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;

class TestTabPane extends JFrame {
	public TestTabPane() {
		JTabbedPane tabPane = new JTabbedPane();
		JPanel pnlFrist = new JPanel();
		pnlFrist.setBackground(Color.RED);
		JPanel pnlSecond = new JPanel();
		pnlSecond.setBackground(Color.GREEN);
		
		tabPane.add(pnlFrist, "첫번째 탭");
		tabPane.add(pnlSecond, "두번째 탭");
		
		add(tabPane);
		
		setSize(500, 500);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		
	}
	public void showGUI() {
		setVisible(true);
	}
}
public class Main2 {
	public static void main(String[] args) {
		new TestTabPane().showGUI();
	}
}

 

 

 

ImageIcon 만들기

 

*이미지가 패키지 폴더 안에 있을때

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

class TestImage extends JFrame implements ActionListener {
	private ImageIcon imageIcon;
	private ImageIcon imageIcon2;
	private JButton btn;
	private JLabel lbl;

	public TestImage() {
		JPanel pnl = new JPanel();
		
		imageIcon = new ImageIcon("춘식13.png");
		imageIcon2 = new ImageIcon("춘식2.png");
		
		lbl = new JLabel(imageIcon);
		lbl.setIcon(imageIcon);
		btn = new JButton(imageIcon);
		btn.addActionListener(this);
		
		pnl.add(lbl);
		pnl.add(btn);
		
		add(pnl);
		
		setSize(500, 500);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setVisible(true);
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		lbl.setIcon(imageIcon2);
		btn.setIcon(imageIcon2);
	}
}

public class Main3 {
	public static void main(String[] args) {
		new TestImage();
	}
}

*이미지가 src 폴더 안에 있을때

import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

class TestImage extends JFrame implements ActionListener {
	private ImageIcon imageIcon;
	private ImageIcon imageIcon2;
	private JButton btn;
	private JLabel lbl;

	public TestImage() {
		JPanel pnl = new JPanel();
		
		Toolkit kit = Toolkit.getDefaultToolkit();
		ClassLoader classLoader = getClass().getClassLoader();
		Image image = kit.getImage(classLoader.getResource("춘식13.png"));
		Image image2 = kit.getImage(classLoader.getResource("춘식2.png"));
		
		imageIcon = new ImageIcon(image);
		imageIcon2 = new ImageIcon(image2);
		
		lbl = new JLabel(imageIcon);
		lbl.setIcon(imageIcon);
		btn = new JButton(imageIcon);
		btn.addActionListener(this);
		
		pnl.add(lbl);
		pnl.add(btn);
		
		add(pnl);
		
		setSize(500, 500);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setVisible(true);
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		lbl.setIcon(imageIcon2);
		btn.setIcon(imageIcon2);
	}
}

public class Main3 {
	public static void main(String[] args) {
		new TestImage();
	}
}

 

 

 

체크박스  만들기

 

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;

class TestCheckBox extends JFrame implements ActionListener, ItemListener {
	private JCheckBox chk1;
	private JCheckBox chk2;
	private JCheckBox chk3;

	public TestCheckBox() {
		JPanel pnl = new JPanel();
		chk1 = new JCheckBox("첫번째 선택지");
		chk2 = new JCheckBox("두번째 선택지");
		chk3 = new JCheckBox("세번째 선택지");
		
		chk1.addActionListener(this);
		chk1.addItemListener(this);
		chk2.addActionListener(this);
		chk3.addActionListener(this);
		
		pnl.add(chk1);
		pnl.add(chk2);
		pnl.add(chk3);
		add(pnl);
		
		
		setSize(500, 500);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setVisible(true);
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		Object o = e.getSource();
		if (o instanceof JCheckBox) {
			JCheckBox source = (JCheckBox) o;
			boolean isSelected = source.isSelected();
			System.out.println(isSelected ? "선택됨" : "해제됨");
		}
	}

	@Override
	public void itemStateChanged(ItemEvent e) {
		int state = e.getStateChange();
		if (state == ItemEvent.SELECTED) {
			System.out.println("선택");
		} else if (state == ItemEvent.DESELECTED) {
			System.out.println("해제");
		}
	}
}
public class Main4 {
	public static void main(String[] args) {
		new TestCheckBox();
	}
}

 

 

 

라디오버튼 만들기

 

import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;

class TestRadio extends JFrame {
	public TestRadio() {
		JRadioButton radio1 = new JRadioButton("첫번째 라디오");
		JRadioButton radio2 = new JRadioButton("두번째 라디오");
		JRadioButton radio3 = new JRadioButton("세번째 라디오");
		
		ButtonGroup group = new ButtonGroup();
		group.add(radio1);
		group.add(radio2);
		group.add(radio3);
		
		JPanel pnl = new JPanel();
		pnl.add(radio1);
		pnl.add(radio2);
		pnl.add(radio3);
		
		add(pnl);
		
		setSize(500, 500);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setVisible(true);
	}
}
public class Main7 {
	public static void main(String[] args) {
		new TestRadio();
	}
}

 

 

 

ActionListener, ItemListener 활용하기

 

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;

class LengthChanger extends JFrame implements ActionListener, ItemListener {
	private boolean is1stChoice = true;
	private JRadioButton radioMileKm;
	private JRadioButton radioKmMile;
	private JTextField tfInput;
	private JLabel lblResult;
	
	public LengthChanger() {
		lblResult = new JLabel();
		
		JPanel pnl = new JPanel();
		radioMileKm = new JRadioButton("Mile을 Km로");
		radioKmMile = new JRadioButton("Km을 Mile로");
		pnl.add(radioMileKm);
		pnl.add(radioKmMile);
		
		radioMileKm.addItemListener(this);
		radioKmMile.addItemListener(this);
		
		ButtonGroup group = new ButtonGroup();
		group.add(radioMileKm);
		group.add(radioKmMile);
		
		radioMileKm.setSelected(true);
		
		add(pnl, "North");
		
		JPanel pnlCenter = new JPanel();
		tfInput = new JTextField(10);
		JButton btn = new JButton("변환하기");
		pnlCenter.add(tfInput);
		pnlCenter.add(btn);
		pnlCenter.add(lblResult);
		add(pnlCenter, "Center");
		
		btn.addActionListener(this);
		
		setSize(500, 500);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setVisible(true);
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		String value = tfInput.getText();
		double number = Double.parseDouble(value);
		if (is1stChoice) {
			// 마일을 km로 1.609 곱
			double result = number * 1.609;
			lblResult.setText(String.valueOf(result));
			
		} else {
			// km를 마일로 1.609 나누기
			double result = number / 1.609;
			lblResult.setText(String.valueOf(result));
		}
	}

	@Override
	public void itemStateChanged(ItemEvent e) {
		is1stChoice = (e.getSource() == radioMileKm);
	}
}

public class Main8 {
	public static void main(String[] args) {
		new LengthChanger();
	}
}

 

 

 

GUI 활용 - 피자 메뉴판 만들기

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.Random;

import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;

class PizzaShop extends JFrame implements ActionListener, ItemListener {
	private JCheckBox chkPineapple;
	private JCheckBox chkOlive;
	private JCheckBox chkMint;
	private JLabel lblFinalPrice;
	private JButton btnAll;
	private JButton btnCancel;
	private JButton btnRandom;
	private int price = 0;
	private JRadioButton radioRepperoni;
	private JRadioButton radioCheese;
	private JRadioButton radioBulgogi;

	public PizzaShop() {
		super("Green Pizza Shop");
		JPanel pnl = new JPanel(new BorderLayout());
		JPanel pnlNorth = new JPanel();
		JPanel pnlWest = new JPanel();
		pnlWest.setLayout(new BoxLayout(pnlWest, BoxLayout.Y_AXIS));
		JPanel pnlCenter = new JPanel();
		pnlCenter.setLayout(new BoxLayout(pnlCenter, BoxLayout.Y_AXIS));
		JPanel pnlEast = new JPanel();
		pnlEast.setLayout(new BoxLayout(pnlEast, BoxLayout.Y_AXIS));
		JPanel pnlButton = new JPanel();
		
		JLabel lbl = new JLabel("Green Pizza");
		lbl.setFont(new Font("굴림", Font.BOLD, 25));
		
		radioRepperoni = new JRadioButton("페퍼로니 (15000)");
		radioCheese = new JRadioButton("치즈 (13000)");
		radioBulgogi = new JRadioButton("불고기 (14000)");
		
		ButtonGroup group = new ButtonGroup();
		group.add(radioRepperoni);
		group.add(radioCheese);
		group.add(radioBulgogi);
		
		chkPineapple = new JCheckBox("파인애플 추가 (+2000)");
		chkOlive = new JCheckBox("올리브 추가    (+1000)");
		chkMint = new JCheckBox("민트초코 추가 (+3000)");
		
		JLabel lblPrice = new JLabel("현재가격 ");
		lblPrice.setFont(new Font("굴림", Font.BOLD, 15));
		lblFinalPrice = new JLabel("0");
		lblFinalPrice.setFont(new Font("굴림", Font.BOLD, 15));
		
		btnAll = new JButton("전체선택");
		btnCancel = new JButton("취소");
		btnRandom = new JButton("랜덤");
		
		radioRepperoni.addItemListener(this);
		radioCheese.addItemListener(this);
		radioBulgogi.addItemListener(this);
			
		chkPineapple.addActionListener(this);
		chkOlive.addActionListener(this);
		chkMint.addActionListener(this);
		
		btnAll.addActionListener(this);
		btnCancel.addActionListener(this);
		btnRandom.addActionListener(this);
		
		pnlNorth.add(lbl);
		
		pnlWest.add(Box.createVerticalStrut(20));
		pnlWest.add(radioRepperoni);
		pnlWest.add(Box.createVerticalStrut(10));
		pnlWest.add(radioCheese);
		pnlWest.add(Box.createVerticalStrut(10));
		pnlWest.add(radioBulgogi);
		pnlWest.add(Box.createHorizontalStrut(10));
		
		pnlCenter.add(Box.createVerticalStrut(20));
		pnlCenter.add(chkPineapple);
		pnlCenter.add(Box.createVerticalStrut(10));
		pnlCenter.add(chkOlive);
		pnlCenter.add(Box.createVerticalStrut(10));
		pnlCenter.add(chkMint);	
		pnlCenter.add(Box.createHorizontalStrut(50));
		
		pnlButton.add(btnAll);
		pnlButton.add(btnCancel);
		pnlButton.add(btnRandom);		
		
		pnlEast.add(Box.createVerticalStrut(20));
		pnlEast.add(lblPrice);
		pnlEast.add(Box.createVerticalStrut(10));
		pnlEast.add(lblFinalPrice);
		pnlEast.add(Box.createVerticalStrut(10));
		pnlEast.add(pnlButton);
		

		
		pnl.add(pnlNorth, "North");
		pnl.add(pnlWest, "West");
		pnl.add(pnlCenter, "Center");
		pnlCenter.setPreferredSize(new Dimension(300, 0));
		pnl.add(pnlEast, "East");
		
		add(pnl);
		
		setSize(600, 200);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setVisible(true);
	}

	public int calculatePrice() {
		price = 0;
		price += radioRepperoni.isSelected() ? 15000 : 0;
		price += radioCheese.isSelected() ? 13000 : 0;
		price += radioBulgogi.isSelected() ? 14000 : 0;		
		price += chkPineapple.isSelected() ? 2000 : 0;
		price += chkOlive.isSelected() ? 1000 : 0;
		price += chkMint.isSelected() ? 3000 : 0;
		return price;
	}
	
	@Override
	public void actionPerformed(ActionEvent e) {
		Object command = e.getSource();
		if (command == btnAll) {
			chkPineapple.setSelected(true);
			chkOlive.setSelected(true);
			chkMint.setSelected(true);
		}
		if (command == btnCancel) {
			chkPineapple.setSelected(false);
			chkOlive.setSelected(false);
			chkMint.setSelected(false);			
		}
		if (command == btnRandom) {
			Random random = new Random();
			boolean chk1R = random.nextBoolean();
			boolean chk2R = random.nextBoolean();
			boolean chk3R = random.nextBoolean();
			chkPineapple.setSelected(chk1R);
			chkOlive.setSelected(chk2R);
			chkMint.setSelected(chk3R);
		}
		lblFinalPrice.setText(String.valueOf(calculatePrice()));
	}

	@Override
	public void itemStateChanged(ItemEvent e) {
		lblFinalPrice.setText(String.valueOf(calculatePrice()));
	}
}

public class Main5 {
	public static void main(String[] args) {
		new PizzaShop();
	}
}