[급함] JFileChooser 다이얼로그 창을이용하여 내부프레임에 이미지 담기...


[ 다음 글들 ] [ 이어서 글올리기(답하기) ] [ 자바 묻고 답하기 ]

글쓴이 :김상일 2000년 7월 05일 21:41:44

여러 다른 홈페이지에도 올렸는데 답변이 없어요.....
자바책은 한번 쭉 봤는데요. 제가 공부를 하고 있는 분야가 영상처리 즉 이미지 처리 분야 인데요. J프레임에 JFileChooser메소드를 file을 열기버튼을 생성하여 *.JPG, *.GIF파일을 내부프레임에 영상을 붙여서 포토샵처럼 만들어 볼려고 폼잡고 있는데요. 내부프레임에 영상을 붙여지지가 않아서요... 고생을 하고 있는데요. 붙이는 방법을 가르쳐 주세요. 아래가 소스이구요. 잘못 된 부분을 코치 좀.. ^^;
그리고요. JFileChooser에 관련 파일은 올리지 않았습니다.


import java.awt.*; // 공통사용
import java.awt.event.*;


import javax.swing.JToolBar; // 툴바관련
import javax.swing.JButton;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.*;
import javax.swing.border.*;


import javax.swing.JInternalFrame; // 내부 프레임관련
import javax.swing.JMenu;
import javax.swing.JDesktopPane;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;


public class MainFrame extends JFrame {
// 내부 프레임을 만든다.
JDesktopPane desktop;


public MainFrame() {
super("Image Processing for Swing(스윙을 이용한 영상처리)");


/* Make the big window be indented 50 pixels from each edge
of the screen. : 화면 자장자리로부터 50픽셀 떨어진 큰 윈도우를 만든다.*/
int inset = 50;
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
setBounds(inset, inset, screenSize.width - inset*2, screenSize.height-inset*2);


// Set up the GUI. : GUI를 설정한다.
desktop = new JDesktopPane(); // a specialized layered pane : 특수화된 다층창
//createFrame(); // Create first window : 첫번째 윈도우를 생성한다.
setContentPane(desktop);
setJMenuBar(createMenuBar());


//Make dragging faster : 윈도우 끌기 속도를 빠르게 향상한다.
desktop.putClientProperty("JDesktopPane.dragMode", "outline");
}


// create MenuBar : 메뉴 만들기 cascade형태로 만들어 진다.
protected JMenuBar createMenuBar() {
JMenuBar menuBar = new JMenuBar();


JMenu menuFile = new JMenu("파일");
menuFile.setMnemonic(KeyEvent.VK_D);
JMenuItem menuItemNew = new JMenuItem("새파일");
menuItemNew.setMnemonic(KeyEvent.VK_N);


JMenuItem menuItemOpen = new JMenuItem("열기");
JMenuItem menuItemSave = new JMenuItem("저장");
JMenuItem menuItemExit = new JMenuItem("종료");


JMenu menuEdit = new JMenu("편집");
JMenuItem menuItemCancle= new JMenuItem("실행취소");
JMenuItem menuItemCopy = new JMenuItem("복사");
JMenuItem menuItemCut = new JMenuItem("자르기");
JMenuItem menuItemPaste= new JMenuItem("붙이기");


JMenu menuImage = new JMenu("이미지");
JMenu menuMode = new JMenu("모드");
JMenuItem menuItemRGB = new JMenuItem("RGB");


JMenu menuFilter = new JMenu("필터");


JMenuItem menuItemLowPass = new JMenuItem("로우 패스");
JMenuItem menuItemHighPass = new JMenuItem("하이 패스");
JMenuItem menuItemMorphology = new JMenuItem("모폴로지");
JMenuItem menuItemBoundary = new JMenuItem("경계선");
JMenuItem menuItemMedian = new JMenuItem("미디안");
JMenuItem menuItemPaint = new JMenuItem("페인트");
JMenuItem menuItemEdge = new JMenuItem("에지");
JMenuItem menuItemColor = new JMenuItem("컬러");


JMenuItem menuHelp = new JMenu("도움말");


menuItemNew.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// createFrame();
}
});


menuFile.add(menuItemNew);
menuFile.add(menuItemOpen);
menuFile.add(menuItemSave);
menuFile.addSeparator();
menuFile.add(menuItemExit);


menuBar.add(menuFile);


menuEdit.add(menuItemCancle);
menuEdit.addSeparator();
menuEdit.add(menuItemCopy);
menuEdit.add(menuItemCut);
menuEdit.add(menuItemPaste);


menuBar.add(menuEdit);


menuMode.add(menuItemRGB);
menuImage.add(menuMode);
menuBar.add(menuImage);


menuFilter.add(menuItemLowPass);
menuFilter.add(menuItemHighPass);
menuFilter.add(menuItemMorphology);
menuFilter.add(menuItemBoundary);
menuFilter.add(menuItemMedian);
menuFilter.add(menuItemPaint);
menuFilter.add(menuItemEdge);
menuFilter.add(menuItemColor);


menuBar.add(menuFilter);


menuBar.add(menuHelp);


// 메뉴 아이템의 열기를 크릭했을 경우 파일 선택 창이 나타난다.
menuItemOpen.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JFileChooser fc = new JFileChooser();
fc.addChoosableFileFilter(new ImageFilter());
fc.setFileView(new ImageFileView());
fc.setAccessory(new ImagePreview(fc));


int returnVal = fc.showDialog(MainFrame.this, "열기");


if (returnVal == JFileChooser.APPROVE_OPTION) {
/*File file = fc.getSelectedFile();
log.append("Attaching file: "" + file.getName()
+ "." + newline);
} else {
log.append("Attachment cancelled by user." + newline);*/
}
}
});


menuItemSave.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JFileChooser fc = new JFileChooser();
/* fc.addChoosableFileFilter(new ImageFilter());
fc.setFileView(new ImageFileView());
fc.setAccessory(new ImagePreview(fc));*/


int returnVal = fc.showDialog(MainFrame.this, "저장");


if (returnVal == JFileChooser.APPROVE_OPTION) {
//File file = fc.getSelectedFile();
/*log.append("Attaching file: "" + file.getName()
+ "." + newline);
} else {
log.append("Attachment cancelled by user." + newline);*/
}
}
});


/* Container contentPane = getContentPane();
contentPane.add(sendButton, BorderLayout.NORTH);
contentPane.add(logScrollPane, BorderLayout.CENTER);*/


return menuBar; // 액션 리스너보다 앞에 있을 경우 에러가 발생한다.
}


/* create ImageFrame : 내부프레임의 커스텀 서브클래스인 이미지 프레임을 구현
protected void createFrame() {
ImageFrame frame = new ImageFrame();
desktop.add(frame);
try {
frame.setSelected(true);
} catch (java.beans.PropertyVetoException e) {}
}*/


// 메인 함수
public static void main(String[] args) {
MainFrame frame = new MainFrame();
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
frame.setVisible(true);
}
}


JFileChooser 부분을 잘못한것 같은데요... 한번 봐 주세요.....



다음 글들:



이어서 글올리기(답하기)

이름:
E-Mail:
제목:
내용:
HTML 태그 포함 여부: HTML 문서일 경우 체크
관련 URL(선택):
URL 제목(선택):
관련 이미지 URL:


[ 다음 글들 ] [ 이어서 글올리기(답하기) ] [ 자바 묻고 답하기 ]