기획
데이터베이스 - ERD에서 sql이 나오는 것
select distinct sido from zipcode; - 시
select distinct gugun from zipcode where sido = '서울'; - 서울의 구군
select distinct dong from zipcode where sido = '서울' and gugun = '중랑구'; - 서울 중랑구 동
UML(Class Diagram) - 공부(중요)
Class Diagram - 클래스 / 메서드 / 필드 중심
Sequence Dialgram - 메서드 호출
use case Dialgram - 기능중심
TO
setXXX
getXXX 메서드가 있다.
DAO - sql과 연동
ArrayList<ZipcodeTO> listSido()
ArrayList<ZipcodeTO> listGugun(String strSido)
ArrayList<ZipcodeTO> listDong(String strSido, String strGugun)
ArrayList<ZipcodeTO> istAddress(String strSido, String strGugun, String StrDong)
ZipcodeTO 클래스
package model;
public class ZipcodeTO {
private String zipcode;
private String sido;
private String gugun;
private String dong;
private String ri;
private String bunji;
private String seq;
public String getZipcode() {
return zipcode;
}
public void setZipcode(String zipcode) {
this.zipcode = zipcode;
}
public String getSido() {
return sido;
}
public void setSido(String sido) {
this.sido = sido;
}
public String getGugun() {
return gugun;
}
public void setGugun(String gugun) {
this.gugun = gugun;
}
public String getDong() {
return dong;
}
public void setDong(String dong) {
this.dong = dong;
}
public String getRi() {
return ri;
}
public void setRi(String ri) {
this.ri = ri;
}
public String getBunji() {
return bunji;
}
public void setBunji(String bunji) {
this.bunji = bunji;
}
public String getSeq() {
return seq;
}
public void setSeq(String seq) {
this.seq = seq;
}
}
ZipcodeDAO 클래스
package model;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
public class ZipcodeDAO {
private Connection conn = null;
// DAO는 생성자가 있어야한다. / 다른곳에서 해도 됨
public ZipcodeDAO() {
// TODO Auto-generated constructor stub
String url = "jdbc:mysql://localhost:3306/project";
String user = "project";
String password = "1234";
try {
Class.forName("org.mariadb.jdbc.Driver");
// this가 Connection conn을 가르킨다
this.conn = DriverManager.getConnection(url, user, password);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
System.out.println("[에러] : " + e.getMessage());
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("[에러] : " + e.getMessage());
} // finally 안써줌
}
public ArrayList<ZipcodeTO> listSido() {
PreparedStatement pstmt = null;
ResultSet rs = null;
ArrayList<ZipcodeTO> sidos = new ArrayList<>();
try {
String sql = "select distinct sido from zipcode";
pstmt = this.conn.prepareStatement(sql);
rs = pstmt.executeQuery();
while(rs.next()) {
ZipcodeTO to = new ZipcodeTO();
to.setSido(rs.getString("sido"));
sidos.add(to);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("[에러] : " + e.getMessage());
} finally {
if (rs != null)try {rs.close();} catch (SQLException e1) {}
if (pstmt != null)try {pstmt.close();} catch (SQLException e1) {}
if (conn != null)try {conn.close();} catch (SQLException e1) {}
}
return sidos;
}
public ArrayList<ZipcodeTO> listGugun(String strSido) {
PreparedStatement pstmt = null;
ResultSet rs = null;
ArrayList<ZipcodeTO> guguns = new ArrayList<>();
try {
String sql = "select distinct gugun from zipcode where sido = ?";
pstmt = this.conn.prepareStatement(sql);
pstmt.setString(1, strSido);
rs = pstmt.executeQuery();
while(rs.next()) {
ZipcodeTO to = new ZipcodeTO();
to.setGugun(rs.getString("gugun"));
guguns.add(to);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("[에러] : " + e.getMessage());
} finally {
if (rs != null)try {rs.close();} catch (SQLException e1) {}
if (pstmt != null)try {pstmt.close();} catch (SQLException e1) {}
if (conn != null)try {conn.close();} catch (SQLException e1) {}
}
return guguns;
}
public ArrayList<ZipcodeTO> listDong(String strSido, String strGugun) {
PreparedStatement pstmt = null;
ResultSet rs = null;
ArrayList<ZipcodeTO> dongs = new ArrayList<>();
try {
String sql = "select distinct dong from zipcode where sido = ? and gugun = ?";
pstmt = this.conn.prepareStatement(sql);
pstmt.setString(1, strSido);
pstmt.setString(2, strGugun);
rs = pstmt.executeQuery();
while(rs.next()) {
ZipcodeTO to = new ZipcodeTO();
to.setDong(rs.getString("dong"));
dongs.add(to);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("[에러] : " + e.getMessage());
} finally {
if (rs != null)try {rs.close();} catch (SQLException e1) {}
if (pstmt != null)try {pstmt.close();} catch (SQLException e1) {}
if (conn != null)try {conn.close();} catch (SQLException e1) {}
}
return dongs;
}
public ArrayList<ZipcodeTO> listAddress(String strSido, String strGugun, String strDong) {
PreparedStatement pstmt = null;
ResultSet rs = null;
ArrayList<ZipcodeTO> addresses = new ArrayList<>();
try {
String sql = "select zipcode, ri, bunji from zipcode where sido=? and gugun=? and dong=?";
pstmt = this.conn.prepareStatement( sql );
pstmt.setString( 1, strSido );
pstmt.setString( 2, strGugun );
pstmt.setString( 3, strDong );
rs = pstmt.executeQuery();
while( rs.next() ) {
ZipcodeTO to = new ZipcodeTO();
to.setZipcode( rs.getString( "zipcode" ) );
to.setRi( rs.getString( "ri" ) );
to.setBunji( rs.getString( "bunji" ) );
addresses.add( to );
}
} catch( SQLException e ) {
// TODO Auto-generated catch block
System.out.println( "[에러] " + e.getMessage() );
} finally {
if( rs != null ) try { rs.close(); } catch( SQLException e ) {}
if( pstmt != null ) try { pstmt.close(); } catch( SQLException e ) {}
if( conn != null ) try { conn.close(); } catch( SQLException e ) {}
}
return addresses;
}
}
SidoComboBoxModel
package zipcodeModel;
import java.util.ArrayList;
import javax.swing.DefaultComboBoxModel;
import model.ZipcodeDAO;
import model.ZipcodeTO;
public class SidoComboBoxModel extends DefaultComboBoxModel<String> {
private ArrayList<ZipcodeTO> sidos;
public SidoComboBoxModel() {
// TODO Auto-generated constructor stub
//sidos = new ArrayList<>();
//ZipcodeTO to = new ZipcodeTO();
//to.setSido("시도");
//sidos.add(to);
ZipcodeDAO dao = new ZipcodeDAO();
sidos = dao.listSido();
}
@Override
public int getSize() {
// TODO Auto-generated method stub
return sidos.size();
}
@Override
public String getElementAt(int index) {
// TODO Auto-generated method stub
// sido데이터 가져오기
ZipcodeTO to = sidos.get(index);
return to.getSido();
}
}
GugunComboBoxModel
package zipcodeModel;
import java.util.ArrayList;
import javax.swing.DefaultComboBoxModel;
import model.ZipcodeDAO;
import model.ZipcodeTO;
public class GugunComboBoxModel extends DefaultComboBoxModel<String> {
private ArrayList<ZipcodeTO> guguns;
public GugunComboBoxModel() {
// TODO Auto-generated constructor stub
guguns = new ArrayList<>();
ZipcodeTO to = new ZipcodeTO();
to.setGugun("구군");
guguns.add(to);
}
// 데이터베이스에 조회한 시도 나오게하기위해 생성자 오버로딩 하였음./strSido가 DAO에 listGugun으로
public GugunComboBoxModel(String strSido) {
ZipcodeDAO dao = new ZipcodeDAO();
guguns = dao.listGugun(strSido);
}
@Override
public int getSize() {
// TODO Auto-generated method stub
return guguns.size();
}
@Override
public String getElementAt(int index) {
// TODO Auto-generated method stub
ZipcodeTO to = guguns.get(index);
return to.getGugun();
}
}
DongComboBoxModel
package zipcodeModel;
import java.util.ArrayList;
import javax.swing.DefaultComboBoxModel;
import model.ZipcodeDAO;
import model.ZipcodeTO;
public class DongComboBoxModel extends DefaultComboBoxModel<String> {
private ArrayList<ZipcodeTO> dongs;
public DongComboBoxModel() {
// TODO Auto-generated constructor stub
dongs = new ArrayList<>();
ZipcodeTO to = new ZipcodeTO();
to.setDong("동");
dongs.add(to);
}
public DongComboBoxModel(String strSido, String strGugun) {
ZipcodeDAO dao = new ZipcodeDAO();
dongs = dao.listDong(strSido, strGugun);
}
@Override
public int getSize() {
// TODO Auto-generated method stub
return dongs.size();
}
@Override
public String getElementAt(int index) {
// TODO Auto-generated method stub
ZipcodeTO to = dongs.get(index);
return to.getDong();
}
}
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.ArrayList;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.border.EmptyBorder;
import javax.swing.border.EtchedBorder;
import javax.swing.border.TitledBorder;
import model.ZipcodeDAO;
import model.ZipcodeTO;
import zipcodeModel.DongComboBoxModel;
import zipcodeModel.GugunComboBoxModel;
import zipcodeModel.SidoComboBoxModel;
public class ZipcodeSearchUI01 extends JFrame {
private JPanel contentPane;
private JComboBox combo1;
private JComboBox combo2;
private JComboBox combo3;
private JTextArea textArea;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
ZipcodeSearchUI01 frame = new ZipcodeSearchUI01();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public ZipcodeSearchUI01() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 600, 800);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JPanel panel = new JPanel();
panel.setBorder(new TitledBorder(
new EtchedBorder(EtchedBorder.LOWERED, new Color(255, 255, 255), new Color(160, 160, 160)),
"\uC6B0\uD3B8\uBC88\uD638 \uAC80\uC0C9\uAE30", TitledBorder.LEADING, TitledBorder.TOP, null,
new Color(0, 0, 0)));
panel.setBounds(6, 15, 566, 55);
contentPane.add(panel);
panel.setLayout(null);
combo1 = new JComboBox();
// combo1.setModel(new DefaultComboBoxModel(new String[] {"시도"}));
combo1.setModel(new SidoComboBoxModel());
combo1.setSelectedIndex(0);
combo1.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
// System.out.println(combo1.getSelectedItem());
// 리턴이 object로 나와서 String으로 형변환 해줌
if (combo2 != null) {
combo2.setModel(new GugunComboBoxModel((String) combo1.getSelectedItem()));
combo2.setSelectedIndex(0);
}
}
}
});
combo1.setBounds(21, 20, 160, 21);
panel.add(combo1);
combo2 = new JComboBox();
// combo2.setModel(new DefaultComboBoxModel(new String[] {"구군"}));
combo2.setModel(new GugunComboBoxModel());
combo2.setSelectedIndex(0);
combo2.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
if (combo3 != null) {
combo3.setModel(new DongComboBoxModel((String) combo1.getSelectedItem(), (String) combo2.getSelectedItem()));
combo3.setSelectedIndex(0);
}
}
}
});
combo2.setBounds(202, 20, 160, 21);
panel.add(combo2);
combo3 = new JComboBox();
// combo3.setModel(new DefaultComboBoxModel(new String[] {"동"}));
combo3.setModel(new DongComboBoxModel());
combo3.setSelectedIndex(0);
combo3.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
textArea.setText("");
String sido = (String)combo1.getSelectedItem();
String gugun = (String)combo2.getSelectedItem();
String dong = (String)combo3.getSelectedItem();
ZipcodeDAO dao = new ZipcodeDAO();
ArrayList<ZipcodeTO> addresses = dao.listAddress(sido, gugun, dong);
for(ZipcodeTO to : addresses) {
String address = String.format("[%s] %s %s %s %s %s", to.getZipcode(), sido, gugun, dong, to.getRi(),
to.getBunji());
textArea.append(address + System.lineSeparator());
}
}
}
});
combo3.setBounds(383, 20, 160, 21);
panel.add(combo3);
JScrollPane scrollPane = new JScrollPane();
scrollPane.setEnabled(false);
scrollPane.setBounds(12, 80, 560, 671);
contentPane.add(scrollPane);
textArea = new JTextArea();
textArea.setEditable(false);
scrollPane.setViewportView(textArea);
}
}
레이아웃은 전부다 클래스이다.
NullLayout(Absolute Layout) - 좌표배치
BoderLayout - 한 화면을 5개로 분할해서 배치(동, 서, 남, 북, 중앙)
FlowLayout - 행 또는 열로 배치
GridLayout - 모눈에 배치
CardLayout - 한 장씩 덮어쓰면서 배치
setLayout, getLayout
레이아웃 상태를 주는것을 setLayout
가져오는것을 getLayout
(기본일뿐 절대적인것은 아님. 바꿔도 됨)
JFrame의 기본 레이아웃은 Border Layout
JPanel 은 Flow Layout
만들어보기
레아이웃 JFrame 클래스를 만듦.
Layout은 BoderLayout으로 돼있음.
absolute선택하면 null로 돼있음
버튼을 5개 분활(동서남북중앙 이렇게 줄 수있어서 버튼으로 줬음)
패널을 생성하여 패널에 버튼생성 후 배치조정해줌
west부분을 패널로 바꾸고 버튼을 2개 넣어줬을때의 디자인
버튼을 쭉 생성하고 실행후 창 늘리면 생성한만큼 나옴
rows와 cols가 생겨서 지정해주고 버튼 아무렇게나 던져도 오른쪽처럼 똑같이 나온다.
계산기, 달력 등 사용
패널을 주고 panel2에는 3개의 패널을 추가적으로 더 넣어주고 각각 백그라운드 컬러로 색상을 입혀놨다.
버튼을 클릭하면 해당 패널을 띄운다
panel2안의 panel들의 Layout을 absolute로 바꾸고 버튼을 각각 줬음.
소스를 보면 각 panel의 이름이 적혀져있다.
각 버튼에 해당 패널의 이름을 넣어줬다.
((CardLayout)panel2.getLayout()).show(panel2,"name_2345917812918300") 는
panel2의 name_2345917812918300의 이름을 가진 패널을 의미.
JButton btn1 = new JButton("Panel1");
btn1.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
// name_2345905414095100
// CardLayout으로 형변환
((CardLayout)panel2.getLayout()).show(panel2,"name_2345905414095100");
}
});
panel1.add(btn1);
JButton btn2 = new JButton("Panel2");
btn2.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
// name_2345917812918300
// 패널 2에 이 이름을 보여줘
((CardLayout)panel2.getLayout()).show(panel2,"name_2345917812918300");
}
});
panel1.add(btn2);
JButton btn3 = new JButton("Panel3");
btn3.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
// name_2345930989913200
((CardLayout)panel2.getLayout()).show(panel2,"name_2345930989913200");
}
});
해당 버튼을 눌렀을때 각각의 패널들을 볼 수 있는데 각기 다른 환경을 가지고있다는것을 알 수 있다.
이벤트 수동으로 주기
1. 이벤트를 연결하는 메서드
2. 이벤트가 발생하면 처리될 이벤트 클래스(interface / dapter class)
3. 이벤트가 발생하면 처리할 이벤트 핸들러 (이벤트 처리용 메서드)
이 3가지가 맞물려 돌아간다.
이벤트가 정의된 클래스 - 인터페이스에 정의돼있어서 우리가 가져다가 쓴다.
ActionEvent는 엔터
인터페이스는 구현해야되는것들이 나온다 / 구현할것이 많아 번거로움이 있다.
이때 메서드들은 "이벤트 핸들러"라고 한다.
JButton btn1 = new JButton("New button");
// 1. 이벤트를 연결하는 메서드
// 2. 이벤트가 발생하면 처리될 이벤트 클래스
// 3. 이벤트가 발생하면 처리할 이벤트 핸들러 (이벤트 처리용 메서드)
// 인터페이스이기때문에 안에있는 것들은 구현해줘야한다.
btn1.addMouseListener(new MouseListener() {
// 이벤트 핸들러
@Override
// 마우스 클릭하고 땔 때
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
System.out.println("mouseReleased");
}
@Override
// 마우스 클릭 누르고있는상태
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
System.out.println("mousePressed");
}
@Override
// 올려져있는 마우스 벗어날때
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
System.out.println("mouseExited");
}
@Override
// 마우스 올렸을때
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
System.out.println("mouseEntered");
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
System.out.println("mouseClicked");
}
});
인터페이스는 구현해야할것이 많아서 불편하지만 어댑터는 사용 사용하고싶은것만 골라서 오버라이딩하여 사용가능
JButton btn2 = new JButton("New button");
btn2.addMouseListener(new MouseAdapter() {
// 마우스 오른쪽클릭으로 오버라이드/임플리먼트... 클릭 후 원하는것 오버라이딩
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
System.out.println("mouseClicked");
}
});
변수.addMouseListener(new MouseAdapter() ){}안에 마우스 오른쪽클릭 -> overred / implement.. 클릭 후 원하는 메서드 선택 후 오버라이딩하여 사용
출력
마우스로 버튼 클릭해서 가져왔었지만 엔터키로 가져오게 하기.
textField = new JTextField();
// windowbuilder에서 만듦
textField.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println(textField.getText());
}
});
/*
수동 코딩
textField.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
System.out.println(textField.getText());
}
});
*/
textField.setBounds(12, 107, 170, 21);
contentPane.add(textField);
textField.setColumns(10);
JButton btn5 = new JButton("New button");
btn5.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
System.out.println("mouseClicked");
}
});
이벤트를 줬을때의 상황이 담겨진것이 이벤트 객체
// 버튼에 올라가있는 커서의 위치가 바뀔때마다 위치값(좌표값)이 바뀌어서 나온다.
System.out.println(e.getX());
System.out.println(e.getY());
버튼을 누르는 마우스 커서의 위치에 따라 값이 출력
// 클릭 카운트 / 더블클릭하면 1,2출력 그냥 클릭만하면 1만 출력됨
System.out.println(e.getClickCount());
한번씩만 클릭하면 1처럼 1만 출력이 되며, 더블클릭할시 1,2 이렇게 더블클릭했다고 뜸.
3번 연속 클릭하면 1,2,3 이런식으로 출력
// 이벤트가 발생한곳을 바꿔준다. / 클릭시 클릭됨으로 변경됨
JButton btn = (JButton)e.getSource();
btn.setText("클릭됨");
버튼 여러개의 이벤트를 통합하여 한꺼번에 주기
inner 클래스를 만들어 버튼에내한 내용을 선언
public EventEx02() {
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 800, 600);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JButton btn1 = new JButton("New button");
// 밑에 MouseListener 구현한 UserMouseEvent1() 객체를 넣어줘서 통합 이벤트주기
btn1.addMouseListener(new UserMouseEvent1());
btn1.setBounds(12, 10, 97, 23);
contentPane.add(btn1);
JButton btn2 = new JButton("New button");
// 밑에 MouseListener 구현한 UserMouseEvent1() 객체를 넣어줘서 통합 이벤트주기
btn2.addMouseListener(new UserMouseEvent1());
btn2.setBounds(12, 43, 97, 23);
contentPane.add(btn2);
JButton btn3 = new JButton("New button");
// 밑에 MouseListener 구현한 UserMouseEvent1() 객체를 넣어줘서 통합 이벤트주기
btn3.addMouseListener(new UserMouseEvent1());
btn3.setBounds(12, 76, 97, 23);
contentPane.add(btn3);
}
// 통합 이벤트를 가지는 인터페이스를 구현한 클래스를 생성하여 이벤트 한번에 주기
class UserMouseEvent1 implements MouseListener {
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
System.out.println("mouseClicked");
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
System.out.println("mouseClicked");
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
System.out.println("mouseClicked");
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
System.out.println("mouseClicked");
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
System.out.println("mouseClicked");
}
}
// 어댑터 상속받아서 필요한것만 오버라이드 하여 클래스에 있는 이벤트 기능을 한번에 주기
class UserMouseEvent2 extends MouseAdapter {
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
System.out.println("mouseClicked");
// 버튼의 이름값 출력
System.out.println( ( (JButton)e.getSource() ).getText() );
// getName은 따로 설정해주면 됨./ default값은 아니다
System.out.println( ( (JButton)e.getSource() ).getName() );
String name = ((JButton)e.getSource()).getName();
switch(name) {
case "button1" :
System.out.println("btn1 mouseClicked");
break;
case "button2" :
System.out.println("btn2 mouseClicked");
break;
case "button3" :
System.out.println("btn3 mouseClicked");
break;
default :
System.out.println("에러");
}
}
}
버튼 3개 다 클릭시 클래스에 있는 이벤트 메서드들이 실행
getName은 라벨명으로 찾아주거나 이름을 정해줄 수 있음.
동그라미친 부분이 확장인데 확장시켜서 name란에 정해주면 getName이 출려된다.
JuminCheckUI
MouseAdapterEx01 클래스에 마우스 클릭 이벤트를 만들고
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class MouseAdapterEx01 extends MouseAdapter {
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
System.out.println("mouseClicked11");
}
}
버튼1번에 MouseAdapterEx01 클래스 객체를 넣어줌
JButton btn1 = new JButton("버튼1");
btn1.setName("button1");
// MouseAdapterEx01 클래스 객체 넣어줌
btn1.addMouseListener(new MouseAdapterEx01());
btn1.setBounds(12, 10, 97, 23);
contentPane.add(btn1);
주민번호 검사기
디자인
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.BorderLayout;
import javax.swing.JTextField;
import javax.swing.JLabel;
import java.awt.GridLayout;
import javax.swing.JButton;
import java.awt.FlowLayout;
public class JuminCheckUI extends JFrame {
private JPanel contentPane;
private JTextField textField1;
private JTextField textField2;
private JTextField textField3;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
JuminCheckUI frame = new JuminCheckUI();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public JuminCheckUI() {
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 573, 473);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(new BorderLayout(0, 0));
JPanel panel1 = new JPanel();
FlowLayout flowLayout = (FlowLayout) panel1.getLayout();
flowLayout.setVgap(15);
flowLayout.setHgap(10);
contentPane.add(panel1, BorderLayout.NORTH);
textField1 = new JTextField();
textField1.setEditable(false);
panel1.add(textField1);
textField1.setColumns(20);
JLabel lblNewLabel = new JLabel("~");
panel1.add(lblNewLabel);
textField2 = new JTextField();
textField2.setEditable(false);
panel1.add(textField2);
textField2.setColumns(20);
JPanel panel2 = new JPanel();
contentPane.add(panel2, BorderLayout.CENTER);
panel2.setLayout(new GridLayout(4, 3, 2, 2));
JButton btn1 = new JButton("7");
panel2.add(btn1);
JButton btn2 = new JButton("8");
panel2.add(btn2);
JButton btn3 = new JButton("9");
panel2.add(btn3);
JButton btn4 = new JButton("4");
panel2.add(btn4);
JButton btn5 = new JButton("5");
panel2.add(btn5);
JButton btn6 = new JButton("6");
panel2.add(btn6);
JButton btn7 = new JButton("1");
panel2.add(btn7);
JButton btn8 = new JButton("2");
panel2.add(btn8);
JButton btn9 = new JButton("3");
panel2.add(btn9);
JButton btn10 = new JButton("0");
panel2.add(btn10);
JButton btn11 = new JButton("DEL");
panel2.add(btn11);
JButton btn12 = new JButton("검사");
panel2.add(btn12);
JPanel panel3 = new JPanel();
contentPane.add(panel3, BorderLayout.SOUTH);
panel3.setLayout(new FlowLayout(FlowLayout.LEFT, 5, 15));
textField3 = new JTextField();
textField3.setEditable(false);
textField3.setText("결과 :");
panel3.add(textField3);
textField3.setColumns(48);
}
}
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.BorderLayout;
import javax.swing.JTextField;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import java.awt.GridLayout;
import javax.swing.JButton;
import java.awt.FlowLayout;
import javax.swing.JTextArea;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class JuminCheckUI extends JFrame {
private JPanel contentPane;
private JTextField textField3;
private JTextArea textArea2;
private JTextArea textArea1;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
JuminCheckUI frame = new JuminCheckUI();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public JuminCheckUI() {
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 573, 473);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(new BorderLayout(0, 0));
JPanel panel1 = new JPanel();
FlowLayout flowLayout = (FlowLayout) panel1.getLayout();
flowLayout.setVgap(15);
flowLayout.setHgap(10);
contentPane.add(panel1, BorderLayout.NORTH);
textArea1 = new JTextArea();
panel1.add(textArea1);
JLabel lblNewLabel = new JLabel("~");
panel1.add(lblNewLabel);
textArea2 = new JTextArea();
panel1.add(textArea2);
JPanel panel2 = new JPanel();
contentPane.add(panel2, BorderLayout.CENTER);
panel2.setLayout(new GridLayout(4, 3, 2, 2));
JButton btn1 = new JButton("7");
btn1.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (textArea1.getText().length() < 6) {
textArea1.append("7");
} else if (textArea2.getText().length() <= 6) {
textArea2.append("7");
}
}
});
panel2.add(btn1);
JButton btn2 = new JButton("8");
btn2.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (textArea1.getText().length() < 6) {
textArea1.append("8");
} else if (textArea2.getText().length() <= 6) {
textArea2.append("8");
}
}
});
panel2.add(btn2);
JButton btn3 = new JButton("9");
btn3.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (textArea1.getText().length() < 6) {
textArea1.append("9");
} else if (textArea2.getText().length() <= 6) {
textArea2.append("9");
}
}
});
panel2.add(btn3);
JButton btn4 = new JButton("4");
btn4.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (textArea1.getText().length() < 6) {
textArea1.append("4");
} else if (textArea2.getText().length() <= 6) {
textArea2.append("4");
}
}
});
panel2.add(btn4);
JButton btn5 = new JButton("5");
btn5.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (textArea1.getText().length() < 6) {
textArea1.append("5");
} else if (textArea2.getText().length() <= 6) {
textArea2.append("5");
}
}
});
panel2.add(btn5);
JButton btn6 = new JButton("6");
btn6.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (textArea1.getText().length() < 6) {
textArea1.append("6");
} else if (textArea2.getText().length() <= 6) {
textArea2.append("6");
}
}
});
panel2.add(btn6);
JButton btn7 = new JButton("1");
btn7.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (textArea1.getText().length() < 6) {
textArea1.append("1");
} else if (textArea2.getText().length() <= 6) {
textArea2.append("1");
}
}
});
panel2.add(btn7);
JButton btn8 = new JButton("2");
btn8.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (textArea1.getText().length() < 6) {
textArea1.append("2");
} else if (textArea2.getText().length() <= 6) {
textArea2.append("2");
}
}
});
panel2.add(btn8);
JButton btn9 = new JButton("3");
btn9.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (textArea1.getText().length() < 6) {
textArea1.append("3");
} else if (textArea2.getText().length() <= 6) {
textArea2.append("3");
}
}
});
panel2.add(btn9);
JButton btn10 = new JButton("0");
btn10.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (textArea1.getText().length() < 6) {
textArea1.append("0");
} else if (textArea2.getText().length() <= 6) {
textArea2.append("0");
}
}
});
panel2.add(btn10);
JButton btn11 = new JButton("DEL");
btn11.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
textArea1.setText("");
textArea2.setText("");
}
});
panel2.add(btn11);
JButton btn12 = new JButton("검사");
btn12.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
String jumin1 = textArea1.getText();
String jumin2 = textArea2.getText();
String strJumin = jumin1 + jumin2;
int[] bits = { 2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5 };
int sum = 0;
for (int i = 0; i < bits.length; i++) {
sum += Integer.parseInt(strJumin.substring(i, i + 1)) * bits[i];
}
int resultNum = (11 - (sum % 11)) % 10;
int lastNum = Integer.parseInt(strJumin.substring(12, 13));
if (lastNum == resultNum) {
textField3.setText("결과 : 정상");
} else {
textField3.setText("결과 : 비정상");
}
}
});
panel2.add(btn12);
JPanel panel3 = new JPanel();
contentPane.add(panel3, BorderLayout.SOUTH);
panel3.setLayout(new FlowLayout(FlowLayout.LEFT, 5, 15));
textField3 = new JTextField();
textField3.setEditable(false);
textField3.setText("결과 :");
panel3.add(textField3);
textField3.setColumns(48);
}
}