2015-05-19 6 views
0

Привет, У меня проблемы при чтении имени изображения в ImageIcon..Оценки не загружаются в JLabel. Программа компилируется, но изображения не видны в JLabel. Пожалуйста, помогите мне выяснить проблему здесь Вы заранееImageIcon С помощью строковых имен

import javax.swing.*; 
import java.awt.event.*; 
import java.awt.*; 

class ImageShuffler extends JFrame implements ActionListener 
{ 
    JButton btnStart,btnPausePlay,btnStop; 
    JLabel lblImage; 
    String [] imageNames ={"1.jpg","2.jpg","3.jpg","4.jpg","5.jpg","6.jpg","7.jpg","8.jpg","9.jpg","10.jpg","11.jpg"}; 
    ImageIcon [] images = new ImageIcon [imageNames.length]; 

    ImageShuffler() 
    { 
     btnStart= new JButton("Start"); 
     btnPausePlay=new JButton("Pause/Play"); 
     btnStop=new JButton("Stop"); 
     lblImage=new JLabel(); 

     for(int i=0;i<imageNames.length;i++) 
     { 
      images[i]=new ImageIcon(imageNames[i]); 
     } 
     setLayout(new FlowLayout()); 
     setSize(200,290); 
     add(btnStart); 
     add(btnPausePlay); 
     add(btnStop); 
     add(lblImage); 
     pack(); 
     setVisible(true); 
     btnStart.addActionListener(this); 
    } 
    public void actionPerformed(ActionEvent e) 
    { 
     if(e.getSource()==btnStart) 
     { 
      while(true) 
      { 
       for(int j=0;j<imageNames.length;j++) 
       { 
        try 
        { 
         lblImage.setIcon(images[j]); 
         Thread.sleep(3000); 
        } 
        catch(Exception ex) 
        { 
         ex.printStackTrace(); 
        } 
       } 
      } 
     } 
    } 

    public static void main(String [] args) 
    { 
     new ImageShuffler(); 
    } 
} 
+0

Ну где файлы, по сравнению с вашим рабочим каталогом? –

+1

'while (true)' in 'actionPerformed' - никогда не должен вводить такой цикл в EDT – copeg

+0

Файлы находятся в одной папке – ojas360

ответ

1

Вы запереться в бесконечном цикле внутри EDT (actionPerformed()), так что графика никогда не обновляется.

Любые изменения, обновляет после обрабатывающ событие (FYI в RepaintManager класса, который проходит в EDT - как и ожидалось).

В любом случае, когда вы хотите непрерывных изменений, используйте качели Timer.