2008년 11월 16일
인터페이스 부분 셋팅 파일
# by | 2008/11/16 20:32 | 정리할 자료들 | 트랙백 | 덧글(0)
현재 프로젝트 진행 정도는 DB와 네트워크 부분 수정 문제로 프로젝트가 잠시 중단 된 시점이다.
DB를 사용 하는 방법에는 2가지를 고려 중이다.
1. 클라이언트 쪽에서 DB 서버에 직접 접근을 한다.
2. 네트워크를 통해서 서버에 쿼리메시지를 보내고 서버는 받은 쿼리메시지를 이용해서 DB에 접근하는 방법이다.
그러나 DB에 접근 할 수 있는 계정을 호스트 마다 정할 수 있다는 점에서 약간 주춤 했던 것이 한가지 있다.
계정명@호스트명 이런식으로 정한다면 모든 호스트에 대한 설정이 문제가 됐었다.
이점에 대해서 검색을 해본 결과..
계정명@%
이렇게 하면 그 어떤 호스트에서도 접근이 가능하다. 그럼 1번의 방법을 이용한다면 클라이언트가 DB에 직접 접근이 가능하다.
이렇게 한다면 java.net 패키지 없이 서버 DB에 접근이 가능하다.
그러나 1번을 이용하지는 않으려고 생각중이다. 여러 클라이언트에서 DB에 접근을 시도 한다고 가정 했을 때 문제가 될 소지가 있다고 보기 때문이다.
2번의 방법을 이용한다면 서버쪽에 DB 쿼리 메시지를 처리해줄 프로그래밍만 해주면
클라이언트 <-네트워크이용-> 서버 <-DB이용-> MySQL
위와 같은 구조로 한다면 프로젝트의 질적인 부분에서도 더 좋다고 생각된다.
끝으로 현재 까지 진행 상황은
로그인, 계정 생성, 계정 삭제, 암호변경, 계정찾기 까지 모두 완료 된 상태이다.
# by | 2008/11/16 20:08 | 정리할 자료들 | 트랙백 | 덧글(2)

public class Internaltest {
public static void main(String[] args) {
JFrame frm = new JFrame("외부 윈도우 창");
JPanel jp = new JPanel();
frm.setLayout(null);
// 이 부분이 생각보다 중요할 수 있습니다. 레이아웃 메니저 때문에 원하는 데로 설정이 안될 수도 있습니다.
// JPanel, JFrame는 기본적인 레이아웃이 다르게 설정 돼 있죠..
JInternalFrame inter = new JInternalFrame("내부 윈도우 창",false,false,false,false);
// JInternalFrame 클래스는 생성자가 많으니 API를 잘 참고해야 합니다.
inter.setSize(200,300);
inter.setLocation(100, 50);
inter.setVisible(true);
frm.add(inter);
frm.setSize(500,500);
frm.setVisible(true);
}
}
간단한 예제이지만 실제로 해보지 않으면 도움이 되질 못합니다. 꼭 해보시길 바랍니다.
# by | 2008/11/10 22:42 | 정리할 자료들 | 트랙백 | 덧글(1)
이번 글에서는 메뉴바를 만들어 보도록 하겠습니다.
그리고 awt에 있는 Menu가 아닌 swing에 있는 JMenu를 예로 합니다.




# by | 2008/11/07 21:56 | 정리할 자료들 | 트랙백 | 덧글(1)

}
while (state == MINUS) {
Thread.sleep(50);
jpb.setValue(index);
label.setText("현재상태 : " + index + "%");
if (index > 0) {
index--;
}
}
while (state == STOP) {
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
PLUS, MINUS, STOP는 final 변수이고 state가 액션리스터 메소드에서 값을 변화합니다.
private final int PLUS = 1;
private final int STOP = 0;
private final int MINUS = 2;
private int state = 0;
그리고 메인메소드에서 이 루프문이 들어 있는 메소드를 실행하면 메인에서 동작하는 것이기에 다운 된 듯한 현상을 깔끔히 해결 할 수 있습니다.
public static void main(String[] args){
Exam1102 ex = new Exam1102();
ex.progressBar();
}
전체 소스는 아래 파일을 참고 하세요.
Exam1102.java
그리고 아까 잠시 이야기 했던 멀티쓰레드를 이용하는 방법에 대해서 이야기 합시다.
이 문제가 발생할 수 있는 이유는 다음과 같습니다.
처음 이벤트를 실행 할 때는 전혀 문제가 되지 않습니다. 그러나 문제는 그 이후부터 발생합니다.
멀티쓰레드를 이용하기 위해서는 약간의 조건이 붙는데 한번 실행 된 메소드는 다시 실행이 불가능합니다.
다시 실행을 하려면 객체를 다시 만들어야 한다는 점이지요.
메소드의 재활용이 불가능하다.(?) 라고 할 수 있습니다.
그렇다면 매번 버튼이 눌러질 떄 마다 객체를 새로 생성해야 한다는 것이 문제가 되지요.
어떻게든 잘만 코딩을 한다면 이 문제점을 해결 할수도 있다고 보는데 일단은 효율적인 면에서 떨어진다고 봅니다.
너무 어려운 길을 돌아서 가는 방법이기 때문이지요.
자바를 이해하고 연구 분석을 하기에는 괜찮은 방법일지는 모르겠지만 얻는 것보다 손해 보는 것이 더 많다고 판단 되기 때문에 이 방법은 추천하지 않습니다.
그럼 이번 글은 여기서 마치도록 하겠습니다.
멀티쓰레드에 관한 정보는 아직 부족한 것이 많으니 보충 설명은 댓글을 달아주세요 ^^;
# by | 2008/11/03 21:49 | 정리할 자료들 | 트랙백 | 덧글(1)