2012-05-23 4 views
2

애플릿의 그리기 이미지에 문제가 있습니다. 애플릿에서 모든 이미지를 하나씩 표시하고 싶지만 내 코드가 아래에 주어진 폴더의 마지막 이미지 만 표시합니다.애플릿의 이미지 그리기

public class ImageInSwingTest extends JApplet 
{ 
    String filePath="C:\\Users\\yogi\\Pictures\\pictures"; //all .png files more than 200 files 
    String files; 
    File folder=new File(filePath); 
    File[] listOfFiles; 
    Image m; 

    @Override 
    public void init() 
    { 
     listOfFiles=folder.listFiles(); 
     for(int i=0;i<listOfFiles.length;i++) 
     { 
      if(listOfFiles[i].isFile()) 
      { 
       files=listOfFiles[i].getName(); 
       if(files.endsWith(".png")) 
       { 
        String filepath=listOfFiles[i].getAbsolutePath(); 
        System.out.println(filepath); 
        try { 
         m = ImageIO.read(new File(filepath)); 
         paint(ImageInSwingTest.this.getGraphics()); 

        } catch (IOException ex) { 
         Logger.getLogger(ImageInSwingTest.class.getName()).log(Level.SEVERE, null, ex); 
        } 
       } 
      } 

     } 
    } 
    public void paint(Graphics g) 
    { 
     g.drawImage(m, 0, 0, this); 

    } 

} 

그래서, 어떻게 하나씩 모든 이미지를 하나씩 표시 할 수 있습니까? 감사합니다. .

+0

문자열 filePath = "C : \\ Users \\ yogi \\ Pictures \\ 그림"; '신뢰할 수있는 애플릿에서도 서버의 이미지에는 작동하지 않습니다. 필요에 따라 서버가 파일 목록을 제공하거나 파일 이름을 애플릿 요소의 매개 변수로 정의해야합니다. –

답변

2

그래서, 어떻게 하나씩 모든 이미지를 하나씩 표시 할 수 있습니까? 감사. for(int i=0;i<listOfFiles.length;i++) 내부 루프의 각 인해

  • JApplet의 내용을 대체

  • JApplet

  • JPanel을 넣어

  • Icon 넣어 Icon[]의 배열 Images 넣어,210

  • 직접 JApplet에 페인트 재정의 메서드 paintComponent() 대신 편집

paint()의와 JPanel 또는 JComponent를 사용하지 않는 JPanel

  • IconsJLabel를 배치 사용 GridLayout

    실제로 내가 그렇게 모든 이미지는 모든 이미지가 서로를 대체 할 영화

    • 을 연주처럼 당신이 SwingWorker 또는 Runnable#Thread 내부 Thread.sleep(int);을 사용할 수 있습니다 Thread.sleep(int);

    • 이 과정을 일시 중지해야

    • 이벤트 발송 스레드를 차단하기 때문에 Swing GUI에서 다른 방법으로 Thread.sleep(int);을 사용하지 마십시오. 일이 그린 것 또는 마지막 이미지가 너무

    • Runnable#Thread 더 쉬운 것,하지만 당신이 찍은 invokeLater

  • +0

    사실 모든 이미지가 서로 바꿔서 모든 이미지가 영화를 재생하는 것처럼 보이기를 바랍니다. –

    +0

    내 편집보기 – mKorbel

    +2

    [* Swing Timer *] (http://docs.oracle.com/javase/tutorial/uiswing/misc/timer.html) 사용을 고려해보십시오. – trashgod

    0

    시간에 JLabel.setIcon(myIcon)을 포장해야하는 스윙 GUI에 Runnable#Thread에서 모든 출력 끝이 너무 짧아서 마지막 이미지 만 볼 수 있습니다. 각 이미지를 그린 후에 pause을 추가하십시오.