2010-08-21 2 views
1

J'ai obtenu le programme pour fonctionner avec des étiquettes mais je ne peux pas l'obtenir pour employer des images. Im un débutant et c'est tout ce que je peux arriver jusqu'à présent. ça marche mais je ne comprends pas l'implémentation des images dans ce code.créer une visionneuse d'images avec la disposition de la carte?

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

public class CardLayoutExample extends JFrame implements KeyListener 

{ 

private Container pane = getContentPane(); 
private CardLayout layout = new CardLayout(); 

public CardLayoutExample() 
{ 
    pane.setLayout(layout); 

    pane.add(new JLabel("hey", SwingConstants.CENTER), "hey"); 
    pane.add(new JLabel("what", SwingConstants.CENTER), "what"); 
    pane.add(new JLabel("is", SwingConstants.CENTER), "is"); 
    pane.add(new JLabel("your", SwingConstants.CENTER), "your"); 
    pane.add(new JLabel("first", SwingConstants.CENTER), "first"); 
    pane.add(new JLabel("name", SwingConstants.CENTER), "name"); 

    addKeyListener(this); 

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setTitle("CardLayout Example"); 
    setSize(410,310); 
    setVisible(true); 

} 

public void keyTyped(KeyEvent event) 
{ 
    layout.next(pane); 
} 

public void keyPressed(KeyEvent event){} 
public void keyReleased(KeyEvent event){} 

public static void main(String args[]) 
{ 
    CardLayoutExample top = new CardLayoutExample(); 
} 
} 

Répondre

1

Pour définir une image avec un JLabel, passer dans un objet d'icône dans le constructeur, ou appeler la méthode setIcon de votre classe.

 
Icon icon1 = new ImageIcon("path to image filename"); 
JLabel label1 = new JLabel("message 1", icon1, SwingConstants.CENTER); 
pane.add(label1, "*You need a static final string here - see below*"); 
 


Pour votre information, vous n'êtes pas à ajouter des éléments de votre CardLayout correctement. Lors de la commutation des volets, le système fait un "==" (pas un .equals) sur la chaîne que vous passez en tant qu'identifiant du volet. Vous verrez bientôt ce problème dans vos tests. Le moyen le plus simple de contourner ce problème consiste à créer des chaînes finales statiques représentant chaque volet et à les utiliser comme identificateurs.

Questions connexes