2011-11-06 3 views
1

이것은 이미지를로드하는 데 사용하는 클래스입니다. 생성자를 사용하여 배열의 이미지를로드하는 metod로드를 호출합니다. 퍼콜소. 나는 이미지의 시퀀스를 jlayeredpane에 칠하려고한다. 이 이미지를 반복을위한 클래스로로드하지만 이미지가 표시되지 않습니다

import java.awt.Component; 
import java.awt.Graphics; 
import java.awt.Image; 
import java.awt.MediaTracker; 
import java.awt.Toolkit; 

class Track extends Component { 
    Image[] percorso; 
    String path; 
    int n; 
    int x; 
    int y; 

    public Track(String path, int n) { 
     int i; 
     this.path = path; 
     this.n = n; 
     this.percorso = new Image[n]; 
     for (i = 0; i < n; i++) { 
     this.percorso[i] = load(path, n, i); 
     repaint(); 
     } 
    } 

    public final Image load(String path, int n, int i) { 
     Toolkit tool = Toolkit.getDefaultToolkit(); 
     String dot = ".jpg"; 
     path = this.path; 
     path = path + Integer.toString(i) + dot; 
     Image img = tool.getImage(path); 
     try { 
     MediaTracker track = new MediaTracker(this); 
     track.addImage(img, 0); 
     track.waitForID(0); 
     } catch (InterruptedException e) { 
     System.out.println("Image not loaded"); 
     } 
     return (img); 
    } 

    @Override 
    public void paint(Graphics g) { 
     int i; 
     g.drawImage(percorso[1], x, y, this); 
    } 
} 

내가 GUI를 만들 클래스이고, 나는의 JLayeredPane에 이미지를 추가하려고 노력하지만, 그것은 작동하지 않았다입니다.

public class Gui extends javax.swing.JFrame { 

    /** Creates new form GUI */ 
    public Gui() { 
     initComponents(); 
    } 

    /** 
    * This method is called from within the constructor to initialize the form. 
    * WARNING: Do NOT modify this code. The content of this method is always 
    * regenerated by the Form Editor. 
    */ 
    @SuppressWarnings("unchecked") 
    // <editor-fold defaultstate="collapsed" desc="Generated Code"> 
    private void initComponents() { 

     background = new javax.swing.JLayeredPane(); 
     testata = new javax.swing.JLabel(); 
     nuova = new javax.swing.JLabel(); 
     selectrack = new javax.swing.JLabel(); 
     track1 = new javax.swing.JLabel(); 
     track2 = new javax.swing.JLabel(); 
     track3 = new javax.swing.JLabel(); 
     track4 = new javax.swing.JLabel(); 
     track5 = new javax.swing.JLabel(); 
     track5.setVisible(false); 
     track6 = new javax.swing.JLabel(); 
     track6.setVisible(false); 
     track7 = new javax.swing.JLabel(); 
     track7.setVisible(false); 
     track8 = new javax.swing.JLabel(); 
     track8.setVisible(false); 
     track9 = new javax.swing.JLabel(); 
     track9.setVisible(false); 
     track10 = new javax.swing.JLabel(); 
     track10.setVisible(false); 
     behind = new javax.swing.JLabel(); 
     behind.setVisible(false); 
     traccy = new javax.swing.JLabel(); 

     setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 

     testata.setFont(new java.awt.Font("Tahoma", 0, 36)); 
     testata.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); 
     testata.setText("Thosa Racing"); 
     testata.setBounds(90, 0, 220, 44); 
     background.add(testata, javax.swing.JLayeredPane.DEFAULT_LAYER); 

     nuova.setFont(new java.awt.Font("Tahoma", 0, 18)); 
     nuova.setText("Nuova"); 
     nuova.addMouseListener(new java.awt.event.MouseAdapter() { 
     public void mouseClicked(java.awt.event.MouseEvent evt) { 
      nuovaMouseClicked(evt); 
     } 
     }); 
     nuova.setBounds(160, 140, 50, 22); 
     background.add(nuova, javax.swing.JLayeredPane.DEFAULT_LAYER); 

     selectrack.setVisible(false); 
     selectrack.setFont(new java.awt.Font("Tahoma", 0, 24)); 
     selectrack.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); 
     selectrack.setText("Scegli il tracciato"); 
     selectrack.setBounds(110, 10, 177, 29); 
     background.add(selectrack, javax.swing.JLayeredPane.DEFAULT_LAYER); 

     track1.setVisible(false); 
     track1.setFont(new java.awt.Font("Tahoma", 0, 24)); 
     track1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); 
     track1.setText("1"); 
     track1.addMouseListener(new java.awt.event.MouseAdapter() { 
     public void mouseClicked(java.awt.event.MouseEvent evt) { 
      track1MouseClicked(evt); 
     } 
     }); 
     track1.setBounds(50, 50, 13, 29); 
     background.add(track1, javax.swing.JLayeredPane.DEFAULT_LAYER); 

     track2.setVisible(false); 
     track2.setFont(new java.awt.Font("Tahoma", 0, 24)); 
     track2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); 
     track2.setText("2"); 
     track2.setBounds(120, 50, 13, 29); 
     background.add(track2, javax.swing.JLayeredPane.DEFAULT_LAYER); 

     track3.setVisible(false); 
     track3.setFont(new java.awt.Font("Tahoma", 0, 24)); 
     track3.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); 
     track3.setText("3"); 
     track3.setBounds(190, 50, 13, 29); 
     background.add(track3, javax.swing.JLayeredPane.DEFAULT_LAYER); 

     track4.setVisible(false); 
     track4.setFont(new java.awt.Font("Tahoma", 0, 24)); 
     track4.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); 
     track4.setText("4"); 
     track4.setBounds(250, 50, 13, 29); 
     background.add(track4, javax.swing.JLayeredPane.DEFAULT_LAYER); 

     track5.setFont(new java.awt.Font("Tahoma", 0, 24)); 
     track5.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); 
     track5.setText("5"); 
     track5.setBounds(320, 50, 13, 29); 
     background.add(track5, javax.swing.JLayeredPane.DEFAULT_LAYER); 

     track6.setFont(new java.awt.Font("Tahoma", 0, 24)); 
     track6.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); 
     track6.setText("6"); 
     track6.setBounds(50, 110, 13, 29); 
     background.add(track6, javax.swing.JLayeredPane.DEFAULT_LAYER); 

     track7.setFont(new java.awt.Font("Tahoma", 0, 24)); 
     track7.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); 
     track7.setText("7"); 
     track7.setBounds(120, 110, 13, 29); 
     background.add(track7, javax.swing.JLayeredPane.DEFAULT_LAYER); 

     track8.setFont(new java.awt.Font("Tahoma", 0, 24)); 
     track8.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); 
     track8.setText("8"); 
     track8.setBounds(190, 110, 13, 29); 
     background.add(track8, javax.swing.JLayeredPane.DEFAULT_LAYER); 

     track9.setFont(new java.awt.Font("Tahoma", 0, 24)); 
     track9.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); 
     track9.setText("9"); 
     track9.setBounds(250, 110, 13, 29); 
     background.add(track9, javax.swing.JLayeredPane.DEFAULT_LAYER); 

     track10.setFont(new java.awt.Font("Tahoma", 0, 24)); 
     track10.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); 
     track10.setText("10"); 
     track10.setBounds(320, 110, 26, 29); 
     background.add(track10, javax.swing.JLayeredPane.DEFAULT_LAYER); 

     behind.setFont(new java.awt.Font("Tahoma", 0, 18)); 
     behind.setText("Behind"); 
     behind.addMouseListener(new java.awt.event.MouseAdapter() { 
     public void mouseClicked(java.awt.event.MouseEvent evt) { 
      behindMouseClicked(evt); 
     } 
     }); 
     behind.setBounds(10, 260, 54, 22); 
     background.add(behind, javax.swing.JLayeredPane.DEFAULT_LAYER); 
     traccy.setBounds(0, 0, 400, 300); 
     background.add(traccy, javax.swing.JLayeredPane.DEFAULT_LAYER); 

     javax.swing.GroupLayout layout = new javax.swing.GroupLayout(
      getContentPane()); 
     getContentPane().setLayout(layout); 
     layout.setHorizontalGroup(layout.createParallelGroup(
      javax.swing.GroupLayout.Alignment.LEADING).addComponent(background, 
      javax.swing.GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE)); 
     layout.setVerticalGroup(layout.createParallelGroup(
      javax.swing.GroupLayout.Alignment.LEADING).addComponent(background, 
      javax.swing.GroupLayout.Alignment.TRAILING, 
      javax.swing.GroupLayout.DEFAULT_SIZE, 300, Short.MAX_VALUE)); 

     pack(); 
    }// </editor-fold> 

    private void nuovaMouseClicked(java.awt.event.MouseEvent evt) { 
     // Disabilita menu principale 
     byte d = 1; 
     disable(d); 
    } 

    private void behindMouseClicked(java.awt.event.MouseEvent evt) { 
     // Torna al menu principale 
     byte d = 2; 
     disable(d); 
    } 

    private void track1MouseClicked(java.awt.event.MouseEvent evt) { 
     trackMDisable(false); 
     Track tracciato1 = new Track("src/track/m", 5); 
     background.add(tracciato1); 

    } 

    // Metodo dis/able menu 
    public void disable(byte i) { 
     boolean d = false; 
     switch (i) { 
     case 1: { 
     // Dal menu principale alla lista tracciati 
     d = true; 
     principalMDisable(d); 
     trackMDisable(d); 
     } 
     case 2: { 
     // Dalla lista tracciati al menu principale 
     trackMDisable(d); 
     principalMDisable(d); 
     } 
     } 
    } 

    public void principalMDisable(Boolean b) { 
     if (b == true) { 
     // se vero disable il menu principale 
     testata.setVisible(false); 
     nuova.setVisible(false); 
     } else { 
     // se falso able il menu principale 
     testata.setVisible(true); 
     nuova.setVisible(true); 
     } 
    } 

    public void trackMDisable(Boolean b) { 
     if (b == true) { 
     // se vero able la lista dei tracciati 
     selectrack.setVisible(true); 
     track1.setVisible(true); 
     track2.setVisible(true); 
     track3.setVisible(true); 
     track4.setVisible(true); 
     track5.setVisible(true); 
     track6.setVisible(true); 
     track7.setVisible(true); 
     track8.setVisible(true); 
     track9.setVisible(true); 
     track10.setVisible(true); 
     behind.setVisible(true); 
     } else { 
     // se falso disable la lista dei tracciati 
     selectrack.setVisible(false); 
     track1.setVisible(false); 
     track2.setVisible(false); 
     track3.setVisible(false); 
     track4.setVisible(false); 
     track5.setVisible(false); 
     track6.setVisible(false); 
     track7.setVisible(false); 
     track8.setVisible(false); 
     track9.setVisible(false); 
     track10.setVisible(false); 
     behind.setVisible(false); 
     } 
    } 

    // Variables declaration - do not modify 
    private javax.swing.JLayeredPane background; 
    private javax.swing.JLabel behind; 
    private javax.swing.JLabel nuova; 
    private javax.swing.JLabel selectrack; 
    private javax.swing.JLabel testata; 
    private javax.swing.JLabel traccy; 
    private javax.swing.JLabel track1; 
    private javax.swing.JLabel track10; 
    private javax.swing.JLabel track2; 
    private javax.swing.JLabel track3; 
    private javax.swing.JLabel track4; 
    private javax.swing.JLabel track5; 
    private javax.swing.JLabel track6; 
    private javax.swing.JLabel track7; 
    private javax.swing.JLabel track8; 
    private javax.swing.JLabel track9; 
    // End of variables declaration} 
} 

내가 어떤 컴파일러 오류가 발생하지 않습니다, 나는 오류가 내가 metod track1MouseClicked에서 이미지를 추가하여 GUI 클래스에서 생각, 내가 넷빈즈 7.01의 JFrom 플러그인을 사용하기위한 프레임과 회사를 만들 .

답변

3

나는 당신의 모든 코드를 통과하지 않은,하지만이 문제가 발생할 것입니다 : 당신이 정말로 여기에 경로 필드를 설정하지 않기 때문에

public final Image load(String path, int n, int i) { 
    Toolkit tool = Toolkit.getDefaultToolkit(); 
    String dot = ".jpg"; 

    path = this.path; // ***** 

. 당신은 그 줄을 뒤집어 놓기를 원할 것입니다.

더 중요한 것은, 훨씬 작은 간단한 프로그램에서 문제를 해결하려고하는 것입니다. 테스트 프로그램은 아무 것도하지 않고 많은 이미지를 읽고 표시하지만 다른 것은 수행하지 않습니다. 그런 다음 해결하면 큰 프로그램에서 코드를 사용하십시오. 다른 이점은 작은 프로그램이 작동하지 않는 경우 더 많은 사람들이 읽고, 분석하고, 테스트하고 수정하려는보다 합리적인 규모의 프로그램으로 게시 할 수 있다는 것입니다.

또한 절대 필요하지 않는 한 Component과 같은 AWT 구성 요소를 Swing 구성 요소와 함께 사용하지 마십시오. 이는 프로그램과 관련이 없습니다.

+0

i 사용 path = this.path; 마지막 전체 경로를 삭제 한 다음 파일의 이름이없는 경로로 재 작성을위한 이 , e는 다음 경로 = 경로로 전체 경로를 추가 + 가지는 Integer.toString (I) + 점; 감사합니다. – Thoniorf

+0

@ 사범 : 방금 한 말을 이해하지 못합니다. 프로그램이 현재 작동합니까? –

+0

아니,하지만 그래, 난 anythings와 새 프레임을 만들고 tracciato1 개체를 추가하는 경우 이미지가 나타납니다, 다른 방식으로 작동하지 않습니다 – Thoniorf

관련 문제