약 5시간
캔버스
파일 저장
한 달전만 해도 AWT 패널 파일 저장 하는 방법을 몰랐는데,
initFrame();
bi = new BufferedImage (FRAME_WIDTH,FRAME_HEIGHT,BufferedImage.TYPE_BYTE_INDEXED);
Graphics2D g = bi.createGraphics();
this.paint(g);
makeMenu(); //m 모든 프레임, 컴포넌트들이 그려지고, 메뉴를 그려야 컴포넌트들이 안가려지고 잘그려짐
위와 같이 BufferdImage를 먼저 프레임 크기로 생성하고,
Graphic객체로 변환해 paint() 메소드의 인자로 넘겨주면 기본준비가 끝난다.
## 저장버튼 액션 리스너
mSave.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
dlgSave.setVisible(true);
g2d.dispose();
String data = dlgSave.getDirectory()+ dlgSave.getFile()+".png";; // 파일의 디렉토리 정보와 파일명을 얻는다.
try{
ImageIO.write(bi, "PNG", new File(data));
String Filename = dlgSave.getFile();
setTitle(Filename); // 프레임 명을 파일명으로 바꾼다..
}catch(Exception e1){
}
}
});
그리고, 저장전에
g2d.dispose()
를 진행하고저장기능
을 구현 하면 된다.
AWT를 자세히 공부하지 않아, 명확한 원리는 모르지만 나중에 필요하면 알아봐야겠다.
📃상태 : 진행중 (공부후 추가 작성)
3번째 이야기
💬상황: 캔버스에 명령한 그림이 안그려지는 제대로 상황
모든 프레임이 그려지기 전에 메뉴 생성을 호출해서 중간에 꼬인 것 같다.
정확한 원인은 모르겠지만, 모든 프레임이 그려지고 나서 메뉴를 생성하니까 문제가 해결이 되었다.
4번째 이야기
💬상황: 인텔리제이가 실행되지 않는 상황
WSL2로 전환하고 Docker Desktop을 사용하면서부터 보게 된 에러인데 Hyper-V가 설정되면 윈도우 시작시 포트들을 가져가버리기 때문인 것 같다.
# 해결방법
dism.exe /Online /Disable-Feature:Microsoft-Hyper-V
이후 윈도우를 재시작
netsh int ipv6 add excludedportrange protocol=tcp startport=6942 numberofports=10
JetBrains 사의 IDE를 동시에 10개 이상은 안 쓸 거 같아 10개만 예약해뒀다.
dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All
오늘은 간만에 GUI 프로그래밍이라, 부담없이 할 수 있는 것만 하니까 즐거웠다.
누군가에게는 매우 쉬울 수 있지만, 한 달전에는 내가 못했던 패널의 그림 저장 기능을 오늘 구현 했을 때 과거의 나보다는 발전했다라는 것을 깨달은 것 같다. 자기 만족이지만 기분이 좋다.
ch1 | ch2 | ch3 | ch4 | ch5 | ch6 | ch7 | ch8 |
---|---|---|---|---|---|---|---|
❌ | ❌ | ❌ | ❌ | ❌ | ✅ 02-03 | ⌛ 02-03 | ❌ |
ch9 | ch10 | ch11 | ch12 | ch13 | ch14 | ch15 | ch16 |
---|---|---|---|---|---|---|---|
❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
노을의 GUI는 언제나 감동입니다. 🥲