@21.04.20
GUI
@이클립스 실행중인 프로젝트 Path 가져오기
현재 내가 있는 프로젝트 주소를 동적으로 가져오는 방법
현재의 Class에서 자원을 가져와 그 중에서도 Path를 가져온다.
@랜덤뽑기 GUI 만들자
"뽑아라 황금열쇠"라는 버튼을 누르면 Label_num 부분에 몇번째 시도인지, 그리고 Label_txt에는 내가 뽑은 상품?? 이 뜨게 된다. 음... 해당 부분에 대한 구현부분만 첨부하겠다.
btn_click.addMouseListener(new MouseAdapter() {
Random r = new Random();
@Override
public void mouseClicked(MouseEvent e) {
// 1. 클릭했을 때 lbl_num에 있는 텍스트를 1씩 증가시켜주세요.
lbl_num.setText(++num+" 번째 시도.");
// 2. 클릭을 했을 때 랜덤한 숫자를 뽑아와주세요. (범위는 배열의 길이만큼)
// 3. 배열 안에 있는 데이터를 랜덤하게 뽑아와서 lbl_txt에 해당하는
// 데이터를 넣어주기.
lbl_txt.setText("랜덤 "+arr[r.nextInt(arr.length)]+"입니다.");
}
});
@팝업창 띄우기 - 로그인
위와 같이 일치하는 ID와 PW를 입력한 경우 로그인에 성공, 아니면 실패라는 메세지를 띄우게 하는 실습
btn_login.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
// 1. 텍스트 필드에 있는 값을 가져오자.
id = txt_id.getText();
txt_id.setText("");
pw = txt_pw.getText();
txt_pw.setText("");
// 2. id가 admin pw도 admin인지 조건을 확인
if(id.equals("admin") && pw.equals("admin")) {
// 로그인 성공! 팝업창 띄우기
JOptionPane.showMessageDialog(null, "로그인 성공하셨습니다.", "로그인 성공",
JOptionPane.INFORMATION_MESSAGE);
lbl_title.setText("관리자님 환영합니다.");
}else {
// 로그인 실패 팝업창 띄우기
JOptionPane.showMessageDialog(null, "로그인 실패하셨습니다.", "로그인 실패",
JOptionPane.ERROR_MESSAGE);}}});
- JPOptionPane Class 는 팝업창을 띄우거나 아이콘 등을 바꿀 수 있다.
- INFORMATION / ERROR _ MESSAGE는 각각 느낌표, 엑스 아이콘을 띄운다.
- 그 외에, 내가 입력한 ID와 PW가 일치하면 팝업창을 띄우도록 코드하였다.
@GUI 창 넘어가기 - 로그인
%Static에 대해서..
우선 위의 main method에 대해 간단히 언급
- static을 통해 만든 main method는 한번에 하나씩만 구동된다.
- 만일 페이지로 옮기기 위해 static main이 있는 창에서 다른 main으로 옮기면 첫번째 main이 존재하는 Class는 종료된다.
위가 무슨 말이냐면... 그러니까 만일 아래와 같은 2개의 Class 파일(GUI)가 있다고 하자.
워우... 화면 ㄴ무 크다 진짜 수정하는 법....
무튼 로그인에 성공했다면, 마이페이지 버튼을 통해 들어갔을 때, 내가 로그인한 정보가 그대로 넘어가야 한다.
하지만 Static Main이 2개의 클래스 파일 모두 존재하기 때문에, Login에 해당하는 클래스 파일은 종료가 되며,
새롭개 MyPage 클래스 파일이 열리는 것(mypage에 static main이 있어서).
결국 문제가 되는건 뭐냐... Login 클래스 파일이 닫히기 때문에 해당 페이지에 입력했던 정보를 가져다 쓸 수 없다는 것이다.
%실습
그럼 각설하고 페이지를 어떻게 넘어가는지 보자. 문제되는건 Static main이다. 중점으로 돌아가는 파일은 Login 파일이고, 결국 mypage는 서브 역할일 뿐. 때문에, mypage의 static main을 지워준다.
그래서 Login 창에서 마이페이지 버튼을 눌렀을 때, mypage Class파일을 가져오도록 수정한다.
JButton btn_mypage = new JButton("\uB9C8\uC774\uD398\uC774\uC9C0");
btn_mypage.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
// 다른 창으로 이동하는 방법
Mypage mypage = new Mypage(id, pw);
// 기존에 열려있는 창 닫는 방법
frame.dispose(); }});
- frame.dispose( ) 는 열려있는 창을 닫아주는 명령어이다.
- Mypage에서 static main을 지웠기 때문에 해당 클래스 파일은 개별적으로 실행되지 않는다.
- 때문에 Login class파일에서 하나의 객체로써 불러들이며 실행한다.
- 이때, 내가 교환하고자 하는 정보는 id,pw이기 때문에 하나의 매개변수로서 집어 넣어 불러온다.
- 당연히 mypage에는 매개변수로서 실행될 생성자가 없다. 때문에 아래와 같이 하나의 생성자를 추가한다.
- 위에서 Login class파일의 main method 부분을 보면 mypage와 동일하게 frame.setVisible 를 볼 수 있다.
- 그냥 간단히 창(frame)을 보여주는 명령어.
- 무튼 MyPage에 매개변수를 받는 생성자를 생성함과 동시에, 창을 열어준다.
- initialize 의 경우는 초기 GUI 형태를 생성하는 Method로, 해당 부분에도 ID,PW를 매개변수로 받도록 수정한다.
아래와 같이
위와 같은 과정을 통해 GUI창간 데이터 교환이 가능해진다.
현재는 그냥 아이디 비번 치면 마이페이지에 이거 2개가 뜨도록 해놨다만..
중점은 GUI창 간에 Data 교환은 위와 같은 형식으로 한다는 것이다.
JDBC
@이클립스와 오라클DB연동
26일차에서 JDBC와 연동하는 법을 배웠었다. 이에 필요한 Ojdbc6.jar이란 파일은 아래의 경로에서 불러왔다.
금일 실습은 26일차와 다르게 자바 코드로써 SQL 명령어를 실행하는게 아닌, 하나의 "터미널" 창 처럼 별도의 창을 불러오는 방법이다. 이를 위한 순서는 캡쳐본으로써 나열해보겠다.
위와 같은 과정으로 생성하고 마지막으로
해당 General 부분에서 Service Name과 Host를 수정해준다. 그러면
위와 같이 SQL Results 란 창을 통해 SQL문을 실행한 결과를 볼 수 있다.
- SQL문 실행은 실행하고자 하는 부분을 '드래그'한 뒤에 'Alt + X' 단축키를 통해 진행된다.
@DTO(Data Transfer Object) - 개념
=> 직역하자면 Data를 Object로 변환해주기 위한 객체.
=> 오직 정보를 보관하고 전달하는 역할로 생성된 Class.
=> 계층간 ( Controller, View 등 ) 데이터 교환을 위한 자바 빈즈( Java Beans).
=> 로직(Method)을 갖지 않는 Data 객체. getter / setter 메소드만을 갖는 Class
등이라 설명할 수 있겠다. 금일 수업에서는 특별히 DTO에 대한 실습은 진행하지 않았다.
%Java Beans ( 자바 빈즈 )
- Java로 작성된 소프트웨어 컴포넌트를 지칭하는 단어.
- 비즈니스 로직 부분을 담당하는 Java 프로그램 단위
- JSP 페이지가 복잡한 자바 코드로 구성되는 것을 피할 수 있다.
- 재사용 가능한 컴포넌트를 만들 수 있다.
내가 좀 이해할 수 있는 말로 요약하면, MVC 방식에서 로직인 Model 영역을 작성하는 기술로, 자바코드를 사용하여 자바 클래스로 로직을 작성한 방법을 말한다.
좀 더 나아가면 JSP페이지에서 화면을 표현키 위한것들의 처리를 담당하는 자바 코드를 따로 분리해 작성한 것
이라고 한다. 무튼... 그냥 Java로 Model 부분을 작성한것이라고 이해하면 될 것 같다.. 좀 더 공부해보자
@DAO(Data Access Object) - 개념
=> DB의 Data에 접근하기 위한 객체.
=> DB관련 작업을 전담하는 클래스
=> DB에 연결하여 입력, 수정, 삭제, 조회 등의 작성을 하는 클래스
=> DB에 CRUD 작업 ( CRUD = Create - Insert / Read - Select / Update - Update / Delete - Delete )
'국비교육기관 > 수업' 카테고리의 다른 글
35일차_ 정처기필기 / HTML (0) | 2021.04.29 |
---|---|
28일차_자바_JDBC (0) | 2021.04.21 |
26일차_자바_GUI_JDBC (0) | 2021.04.19 |
25일차_자바_GUI (0) | 2021.04.16 |
24일차_자바_상속_오버라이딩_캐스팅 (0) | 2021.04.15 |
댓글