요즘 자바의 Graphics을 이용하여, 유틸리티를 만들고 있습니다.


drawImage 함수의 경우 제목 표시줄을 제외하고 


실질적은 Graphics 프레임 영역에서 부터 0,0이 시작됩니다.


그런데 drawString은 제목 표시줄의 영역부터 0,0이 시작됩니다.


그래서 drawString을 0,0내 찍으면 제목표시줄에 가려서 보이지가 않습니다.



그냥 Y 좌표에 대략적으로 +10, +12 정도 주고 사용해도 되겠지만,


자바의 특성상 다른 OS에 갔을때 제목표시줄의 크기가 변할것 같은 찜찜함에 


해결 방법을 찾아봤습니다.


https://stackoverflow.com/questions/45227294/setting-drawstring-so-0-0-is-inside-the-draw-area

에서 해법을 찾았습니다.


기준의 위치를 바꿔주면 됩니다.



  FontMetrics fm = g.getFontMetrics();

    g.translate(0, fm.getAscent());

   

    Font font = new Font ("font/NanumBarunGothic.ttf", Font.PLAIN, fontSize); 

    g.setColor(color);

    g.setFont (font);

    g.drawString(str, x, y);

   

   

    g.translate(0, 0);


위와 같이 기준점을 fm.getAscent() 함수를 이용해 변경해서 drawString 글자를 찍고


다시 원래대로 g.translate(0, 0); 돌려줍니다. 


위와 같은 방법으로 문제를 해결했습니다.




JFileChooser jfc = new JFileChooser();
jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
jfc.showDialog(this, null);

File dir = jfc.getSelectedFile();
jt_save_path.setText(dir!=null?dir.getPath():"");



버튼 이벤트에 위와 같이 넣으면 DIRECTORIES_ONLY에 의해 폴더만 선택이 가능한 

파일 탐색창이 뜹니다. 


해당 경로를 선택하면 jt_save_path 부분에 해당 path를 저장합니다. 





출처 : http://happy2ni.egloos.com/2838029





  1. 감사합니다! 많은도움됏어요 2016.07.22 09:35

    ㅋㅋㅋ감사합니다 짧고굵네여


아무리 노력을 해도 나타나지 않는 스크롤바!!!!!!! 

극적으로 해결했습니다.



1 JPanel jpList = new JPanel(); 2 jpList.setLayout(new GridBagLayout()); 3 JScrollPane scrollSingle = new JScrollPane(jpList, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, 4 ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); 5 scrollSingle.setPreferredSize(new Dimension(400, 200));




기본적으로 GridBagLayout() 사용하면 계속 크기를 늘리며 추가된다.

개념을 잘못 이해했습니다. 


스크롤에 크기를 주고 GridBagLayout에 삽입하고


그후엔 jpList 에 무한정 추가하여도 JScrollPane 크기를 벗어나면 자동 스크롤이 되어집니다.


위의 파란 코드는 무조건 스크롤이 표시되도록 하는 코드이고


붉은 부분은 스크롤의 크기를 고정해 주는 코드 입니다.


scrollSingle.setSize(400,200); 으로 백날 해봐야 크기 지정이 되지 않았는데,


scrollSingle.setPreferredSize(new Dimension(400, 200)); 을 쓰시기 바랍니다.







+ Recent posts