본문 바로가기

Study/Tips

17.05.31.gui진행상황 / 06.01 / 06.02 / 06.04

1. 넷빈에서 gui 만들려고 함.


 -문제: 넷빈gui코드와 intelliJ(이클립스형으로 인코딩된 프로젝트 x-windows-949)연동이 안됨. 한글깨짐

 - 해결: 인텔리제이 new project-설정 바꿔줌(x-949)

netbeans new project- 만들어서 eclipse로 export(.zip)

그 후 zip파일을 풀어 인텔리제이 new project안에 넣어준다. (폴더상태로. 인텔리제이 쓰지 않고 외부 디렉토리에서 직접)



2. gui안에 while문 안먹힌다. Thread.sleep()해도 마지막부분만 보이고 중간 변화과정 안보임


-해결법1: repaint() 사용    //안먹힘

-해결법2: Thread사용    //알아보는 중


해결법2: 사용하기 위해 new class해야 하는데, 넷빈에서 한 JFrame위에 만드는 것 말고 외부 클래스(JPanel)만들어서 어떻게 가져오는지 모르겠다.    //알아보는중


3. GUI와 코드 연동시키기


껍질뿐인 gui말고 코드를 연동시켜서 사용하려는데, 어떻게 tank와 gui의 tankPanel을 연동시킬까

//class tankPanel extends JPanel 해서 쓰려는데, 이 JPanel을 어떻게 MainFrame에 넣어 사용하는지 모르겠다. //해결법 2와 같은 문제.




https://stackoverflow.com/questions/19812806/how-to-call-the-java-swing-jpanel-from-another-class-method-in-netbeans







====================================================

1. 한명은 eclipse의 Window BUilder로 작업, 나는 Netbean으로 작업

문: 윈도우 빌더로 한 작업을 넷빈으로 못 본다.

코드도 다르다. 어떻게 돌아가는지 감은 알겠는데, 수정은 힘들 것 같다


2.JFrame 안에 다른 JPanel Class 불러와서 이용하기

해결함. 간단했음.

JFrame 에 왼쪽의 JPanel을 드래그해서 불러오자..

그리고 우측클릭해서 encloseIn>panel어쩌구 해서 JFrame안의 패널로 만드는게 있었다. 그걸 눌러서 jFrame에서 얘를 관리할 수 있게 해주ㅝㅆ다.


문) JPAnel 안의 component와 배치 문제

해) Jpanel과 componet사이의 간격이 있다. 더블클릭해보면 뭐 간격조절어쩌구하고 resize해서 체크표시하는 곳이 있는데, 체크표시해두면 다른 프레임에 넣었을 떄 리사이즈 가능하고, 체크 안하면 그 간격은 유지 한 채 jpanel의 크기를 조절 할 수 있다.


3. JFrame 안에 JPanel(안에 button1 포함)과 Jbutton이 있을 떄. 스페이스바 등을 누르면 JPanel이 포커스를 먹어서 jbutton이 안 움직일떄

(jPanel: 2에서 불러온 그 클래스, Jbutton: JFrame에서 직접 생성한 button)


해결) 윈도우 자체(JFrame자체)에 포커스를 준다.

JFrame생성자에 setFocusable(true);을 넣어줌.



그리고 윈도우(JFrame)에 리스너를 달아준다.


리스너 다는 법은 모르겠어서 그냥 jframe 오른쪽클릭-keyPressed넣어줬다. 그리고 이 안에 jbutton의 리스너(?)를 넣어줌

  private void formKeyPressed(java.awt.event.KeyEvent evt) {                               
        // TODO add your handling code here:
        jButton1KeyPressed(evt);
                                      
} 요렇게

 

3. JFrame생성자에서 jButton.setLocation(10,30)하면 그 위치에 버튼이 올라가지 않는다..

그래서 임시로 keyPressed에 넣어줬다. 키를 한번은 눌러줘야 위치가 설정된다..


해결: 생성자 내부에 코드 넣어줌

//1. 우선 setLayout(null)로 안보이게 한 다음.

2. 생성할 좌표를 넣고

3. add해준다.


        //jPanel5.setLayout(null);
        t = new Tank(356,776);
        jPanel5.setLocation(t.getTankX(),t.getTankY());
        add(jPanel5);



4. 현재 완료된것

tank클래스

 - 처음 탱크 시작지점 설정(생성자)

 - 탱크 움직이기(오, 왼) // gui에서 setLocation(t.right)이런식으로 쓴다.

 - 탱크로 쏘면 포탄 도착지점 정하기(탱크 위치따라 도착지점 다름)


해야 할 것

포탄이 움직이는 애니메이션..


==========================================================


넷빈 버렸다.

나흘 밤을 찾아봐도 안나오는게 넷빈의 timer클래스 사용법이었따.

영어로 한글로 엥간한건 다찾아봤는데도 못만들었따

넷빈새끼


이클립스를 좋아하지 않지만 윈도우빌더를 쓰기 위해 이클립스를 다시 잡았다.

윈도우빌더..편하더라..

인텔리제이 자체에 있는 form빌더보다 더 편했다.

윈도우빌더 짱짱맨



//=================================================================

http://www.dreamincode.net/forums/topic/266194-rotating-a-jlabel/

rotate관련.




'Study > Tips' 카테고리의 다른 글

블로그에 깔끔하게 코드 올리기: Color Scripter  (0) 2018.07.04
jar파일 실행가능하게 하기  (0) 2017.06.14
자바 숫자 반올림/버림/내림  (0) 2017.03.19
자바 숫자 표현(BigDecimal)  (0) 2017.03.19
자바 준비물  (0) 2017.03.12