화면 전환하는 창 만들기
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();
}
}
'STUDY > 국비과정' 카테고리의 다른 글
[JAVA 웹 개발 공부] 국비지원 26일차 - 컬렉션(collection), Iterator, ArrayList (0) | 2022.12.05 |
---|---|
[JAVA 웹 개발 공부] 국비지원 25일차 - 이벤트 처리, 내부 클래스, 익명 클래스 (0) | 2022.12.04 |
[JAVA 웹 개발 공부] 국비지원 23일차 - 배치 관리자, 레이아웃, GUI 활용 (0) | 2022.11.30 |
[JAVA 웹 개발 공부] 국비지원 22일차 - 에러, 예외, 오류, 래퍼 클래스, 예외 처리, try-catch문, GUI, JFrame, JPanel (0) | 2022.11.29 |
[JAVA 웹 개발 공부] 국비지원 20, 21일차 - 팀프로젝트 <호텔 객실 예약 프로그램 만들기> (1) | 2022.11.29 |