Back/JAVA
[심화예제] Java Gui와 Event를 이용하여 회원가입 프로그램 만들기
시월해
2021. 3. 23. 16:34
package exam;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class JoinScreen extends JFrame {
String choice = null;
public JoinScreen() {
setTitle("회원관리 화면");
// 1. 컴포넌트들을 만들어 보자.
JLabel title =
new JLabel("회원가입", JLabel.CENTER);
title.setForeground(new Color(5, 0, 153));
title.setFont(new Font("휴먼편지체", Font.BOLD, 30));
JButton join = new JButton("회원가입");
JButton cancel = new JButton("취소");
JTextField id = new JTextField(10);
JPasswordField pwd = new JPasswordField(10);
JTextField name = new JTextField(10);
JTextField phone = new JTextField(10);
JRadioButton client = new JRadioButton("고객");
JRadioButton manager = new JRadioButton("관리자");
JRadioButton etc = new JRadioButton("기타");
ButtonGroup bg = new ButtonGroup();
bg.add(client); bg.add(manager); bg.add(etc);
// radio panel
JPanel radioPanel = new JPanel();
radioPanel.add(client);
radioPanel.add(manager);
radioPanel.add(etc);
// form panel
JPanel idPanel = new JPanel();
idPanel.setLayout(new FlowLayout(FlowLayout.RIGHT));
idPanel.add(new JLabel("아이디 : "));
idPanel.add(id);
JPanel pwdPanel = new JPanel();
pwdPanel.setLayout(new FlowLayout(FlowLayout.RIGHT));
pwdPanel.add(new JLabel("비밀번호 : "));
pwdPanel.add(pwd);
JPanel namePanel = new JPanel();
namePanel.setLayout(new FlowLayout(FlowLayout.RIGHT));
namePanel.add(new JLabel("이 름 : "));
namePanel.add(name);
JPanel phonePanel = new JPanel();
phonePanel.setLayout(new FlowLayout(FlowLayout.RIGHT));
phonePanel.add(new JLabel("연 락 처 : "));
phonePanel.add(phone);
JPanel formPanel = new JPanel();
formPanel.setLayout(new GridLayout(4, 1));
formPanel.add(idPanel);
formPanel.add(pwdPanel);
formPanel.add(namePanel);
formPanel.add(phonePanel);
// radio + form panel
JPanel contentPanel = new JPanel();
contentPanel.setLayout(new FlowLayout());
contentPanel.add(radioPanel);
contentPanel.add(formPanel);
// button panel
JPanel panel = new JPanel();
panel.add(join);
panel.add(cancel);
add(title, BorderLayout.NORTH);
add(contentPanel, BorderLayout.CENTER);
add(panel, BorderLayout.SOUTH);
setBounds(200, 200, 250, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
// 이벤트 처리
join.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String myId = id.getText();
String myPwd = new String(pwd.getPassword());
String myName = name.getText();
String myPhone = phone.getText();
if(client.isSelected()) {
choice = client.getText();
}else if(manager.isSelected()) {
choice = manager.getText();
}else if(etc.isSelected()) {
choice = etc.getText();
}
JOptionPane.showMessageDialog
(null, "아이디 : "+myId+", 비밀번호 : "+myPwd+
", 이 름 : "+myName+", 연락처 : "+myPhone+
", 가입유형 : "+choice);
}
});
// 취소 버튼을 클릭했을 때 이벤트 처리
cancel.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new LoginScreen();
dispose();
}
});
}
}
package exam;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class LoginScreen extends JFrame {
public LoginScreen() {
setTitle("제품관리 시스템");
JPanel title = new JPanel();
// title 컨테이너에 들어갈 컴포넌트를 만들어 보자.
JLabel login = new JLabel("로그인 화면");
// Color color = new Color(5, 0, 153)
login.setForeground(new Color(5, 0, 153));
// Font font = new Font("휴먼편지체", Font.BOLD, 25);
login.setFont(new Font("휴먼편지체", Font.BOLD, 25));
// 컴포넌트를 title 컨테이너에 올려 주자.
title.add(login);
JPanel jp1 = new JPanel();
jp1.setLayout(new GridLayout(3, 2));
JPanel idPanel =
new JPanel(new FlowLayout(FlowLayout.RIGHT));
JLabel jlb1 = new JLabel("아이디 : ", JLabel.CENTER);
idPanel.add(jlb1);
JPanel idPanel2 =
new JPanel(new FlowLayout(FlowLayout.LEFT));
JTextField jtf1 = new JTextField(10);
idPanel2.add(jtf1);
jp1.add(idPanel); jp1.add(idPanel2);
JPanel pwdPanel =
new JPanel(new FlowLayout(FlowLayout.RIGHT));
JLabel jlb2 = new JLabel("비밀번호 : ", JLabel.CENTER);
JPanel pwdPanel2 =
new JPanel(new FlowLayout(FlowLayout.LEFT));
JPasswordField jtf2 = new JPasswordField(10);
pwdPanel.add(jlb2); pwdPanel2.add(jtf2);
jp1.add(pwdPanel); jp1.add(pwdPanel2);
JPanel loginPanel =
new JPanel(new FlowLayout(FlowLayout.RIGHT));
JButton jLogin = new JButton("로그인");
JPanel joinPanel =
new JPanel(new FlowLayout(FlowLayout.LEFT));
JButton join = new JButton("회원가입");
loginPanel.add(jLogin); joinPanel.add(join);
jp1.add(loginPanel); jp1.add(joinPanel);
JPanel jp2 = new JPanel();
jp2.setLayout(new FlowLayout());
jp2.add(jp1);
setLayout(new BorderLayout());
add(title, BorderLayout.NORTH);
add(jp2, BorderLayout.CENTER);
setBounds(200, 200, 300, 250);
setResizable(false); // 화면 크기 고정하는 작업
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
// 이벤트 처리
jLogin.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String myId = jtf1.getText();
String myPwd = new String(jtf2.getPassword());
JOptionPane.showMessageDialog
(null, "아이디 : "+myId+", 비밀번호 : "+myPwd);
}
});
join.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new JoinScreen();
dispose(); // 현재의 frame을 종료시키는 메서드.
}
});
}
}
package exam;
public class Main {
public static void main(String[] args) {
new LoginScreen();
}
}