2013-03-24 2 views
0

Java를 처음 사용하기 시작한 초보자입니다. 디렉토리를 검색하여 이미지를 열어 이미지를 열 수있는 사진 뷰어를 만들려고했지만 프로그램에서 이미지를 표시하지 않습니다.이미지가 JPanel에 표시되지 않습니다

프로그램을 실행하면 열리고 내 디렉토리를 검색하는 데 사용하는 메뉴 모음이 표시되지만 이미지를 선택하더라도 표시되지 않습니다. TIA.

import java.awt.*; 
import java.awt.event.*; 
import java.awt.image.BufferedImage; 
import java.io.*; 
import javax.swing.*; 
import javax.swing.event.*; 
import javax.swing.filechooser.FileNameExtensionFilter; 
import javax.imageio.ImageIO; 

public class ICS 
{ 
private JPanel gui; 
private JFileChooser fileChooser; 
FilenameFilter fileNameFilter; 
private JMenuBar menuBar; 
DefaultListModel model; 
public ICS() { 
    gui = new JPanel(new GridLayout()); 

    final JLabel imageView = new JLabel(); 
    gui.add(imageView); 

    fileChooser = new JFileChooser(); 
    String[] imageTypes = ImageIO.getReaderFileSuffixes(); 

    menuBar = new JMenuBar(); 
    JMenu menu = new JMenu("GET PHOTO HERE"); 
    menuBar.add(menu); 
    JMenuItem browse = new JMenuItem("browse"); 
    menu.add(browse); 

    browse.addActionListener(new ActionListener(){ 
      public void actionPerformed(ActionEvent ae) { 
       int result = fileChooser.showOpenDialog(gui); 
       if (result==JFileChooser.APPROVE_OPTION) { 
        File eg = fileChooser.getSelectedFile(); 
       } 
      } 
     }); 
} 

public void loadImages(File directory) throws IOException { 
    File[] imageFiles = directory.listFiles(fileNameFilter); 
    BufferedImage[] images = new BufferedImage[imageFiles.length]; 
} 

public Container getGui() { 
    return gui; 
} 

public JMenuBar getMenuBar() { 
    return menuBar; 
} 

public static void main(String[] args) { 
    SwingUtilities.invokeLater(new Runnable(){ 
      public void run() { 
       ICS imageList = new ICS(); 

       JFrame f = new JFrame("Image Browser"); 
       f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
       f.add(imageList.getGui()); 
       f.setJMenuBar(imageList.getMenuBar()); 
       f.setLocationByPlatform(true); 
       f.pack(); 
       f.setSize(800,600); 
       f.setVisible(true); 
      } 
     }); 
} 

}

답변

2

당신은 선택한 파일에 아무것도 아닙니다. 당신이 당신의 JPanel의 빈 JLabel을 감안할 때, 당신은 단순히 해당 구성 요소의 Icon을 설정할 수 있습니다 : 당신이 그것을 말한 적이 있기 때문에 그것은 이미지와 아무것도 아니에요

imageView.setIcon(new ImageIcon(eg.getPath())); 
+0

내가 추가해야 할 특정 장소가 있습니까? – user2205330

+0

언뜻보기에는 이것이 정확 해 보이는 반면, 나는 "이것이 완료된 방법"이라고 말하면서 자신이 생각한 것을 배워서 똑같은 실수를하지 않도록 적어도 그가 잘못한 것에 대한 설명을 주겠다. 다시. – SevenBits

+0

내가 선택한 대답을 말한 것처럼 선택한 파일을 검색 한 직후의 동작 수신기에서. – SevenBits

0

. 액션 리스너에서 파일 선택기를 만들고 선택한 파일을 가져 왔지만 아무 것도하지 않았습니다. 액션 리스너 내에서 로컬 변수로 정의하면 리스너가 종료 될 때 즉시 파기됩니다.

사용자가 수행해야하는 작업은 사용자가 선택한 파일을 검색 한 후 실제로 이미지를 표시하는 함수 호출을 만드는 것입니다.

또한 ICS는 클래스의 끔찍한 이름입니다. 프로그램이 커지고 모든 것이 무엇을했는지 기억하려고 할 때 자신의 참조 및 온건함을 위해 클래스 이름을 설명해야합니다.

관련 문제