음 제가하려고하는게 버튼 누르면 액션리스너로 selectPicture라는 메서드 실행시키구 이제 selectPicture메서드에있는 JFilechooser 나오면서 사진 선택하면 openFile이라는 메서드(메서드라고 하는게 맞나요? 용어에 약해서..) 에서 선택한 사진파일의 절대경로를 getCanonicalPath 써서 변수로 저장해서 그 절대경로 이용해서 ImageIcon, JLabel 이용해서 사진 띄우는거거든요 근데 getCanonicalPath()쓰면 저장되는 절대경로가 C: 같이 역슬래시로 저장되잖아요 그래서 ImageIcon에서는 경로에 / 가 쓰이니까 replaceAll("", "/"); 이거가지고 바꾸는거를 openFile 메서드에서 해줬거든요 근데 문제가 발생하는게 저 /로 바뀐 경로가 openFIle메서드에서 지정이되는건데 openFile 메서드가 나중에 실행되니까 메인메서드(static main말구 그 Label같은거 넣어주는데요...)에서는 그 변수 쓰니까 null값으로 뜨더라고요.. 그래서 빡쳐서 메인메서드에서 getCanonicalPath()하니까 이건되는데 또 이상한게 메인메서드에서는 replaceAll이 안되더라고요 설명을 거지같이해놔서 이해하기 힘드실수도있는데 이럴경우에 어떻게 해야하는지좀 알려주세요 형님들 ㅠㅜㅠㅜㅠㅜ ----------------------------------------- 메인메서드 itemInfo = new ImageIcon(picAddrC); itemPic = new JLabel(itemInfo); ----------------------------------------- public void selectPicture(){ JFileChooser chosPic=new JFileChooser(); chosPic.setDialogTitle("사진 올리기"); int returnVal=chosPic.showOpenDialog(this); if(returnVal !=JFileChooser.APPROVE_OPTION)//cancel 버튼이 눌려지면 취소 return; File f=chosPic.getSelectedFile();//대화상자에서 선택된 파일객체 인스턴스를 구한다 if(!f.exists()) {//파일이 존재하지 않으면 에러 메세지를 띄운후 취소 JOptionPane.showMessageDialog(this,file.getName()+" 파일을 찾을 수 없습니다.", "파일 열기 에러",JOptionPane.ERROR_MESSAGE); return; } openFile(f);
}
public void openFile(File file){ try { picAddr = file.getCanonicalPath(); picAddrC = picAddr.replaceAll("", "/"); } catch (IOException e1) { e1.printStackTrace(); } this.file=file; } |
댓글 0