2010-01-25 6 views
4

J'utilise un JList dans Java Swing, mais lorsque ma boîte de dialogue s'ouvre, la liste n'est pas affichée.Java Swing JList

private JList getJList() { 
    if (mylist == null) { 
    mylist = new JList(); 
    mylist.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 
    mylist.setSize(new Dimension(154, 106)); 
    model.addElement("test"); 
    model.addElement("zwei"); 
    mylist.setVisible(true); 

    } 
    return mylist; 
} 

La liste est définie:

private JPanel getJContentPane() { 
    if (jContentPane == null) { 
    jContentPane = new JPanel(); 
    jContentPane.setLayout(new BorderLayout()); 
    jContentPane.add(getJList(), BorderLayout.CENTER); 

    } 
    return jContentPane; 
} 

Il est un JContentPane (/ Panel)

public fensterdrei(Frame owner) { 
    super(owner); 
    initialize(); 
    } 

le code d'appel getJContentPane():

private void initialize() { 
     this.setSize(300, 200); 
     this.setContentPane(getJContentPane()); 
     this.setTitle("Auswahl"); 
} 
+0

Ar e vous ne voyez pas la zone de liste ou seulement son contenu? aussi, BTW, vous rendez votre liste "visible" avant de l'ajouter au volet. – Uri

+0

JContentPane est visible? as-tu appelé pack()? (seulement deviner) – helios

+0

je ne vois pas la boîte (set.visible était juste un test: P) – Tyzak

Répondre

6

Je ne trouve pas où vous définissez le modèle de JList?

Quelque chose comme

mylist = new JList();  
mylist.setModel(model); 

S'il vous plaît jeter un oeil à la Code Conventions for the Java Programming Language

FensterDrei au lieu de fensterdrei
myList au lieu de mylist

+0

salut vous avez raison, private DefaultListModel model2 = new DefaultListModel(); so -> si (mylist == null) { mylist = nouveau JListe (MODÈLE); – Tyzak

4

Il est getContentPane pas getJContentPane, et toi Je ne suis pas censé le surcharger.

Au lieu de cela, dans votre constructeur (ou une autre fonction qui est appelée tout de suite) vous

getContentPane().setLayout(new BorderLayout()); 
getContentPane().add(getJList(), BorderLayout.CENTER); 
+0

salut, fait-il un différent lorsque le nom de la méthode est getContentPane ou getJContentPane? Je pense que c'est juste le nom de la méthode, n'est-ce pas? comme ça? privé void initialize() { \t \t this.setSize (300, 200); \t \t this.setContentPane (getJContentPane()); \t \t this.setTitle ("Auswahl"); \t \t getContentPane(). Add (getJList(), BorderLayout.CENTER); \t \t getContentPane(). Add (getJList(), BorderLayout.CENTRE); \t} – Tyzak

1

Pour répondre à votre question, je besoin de voir le code qui appelle getJContentPane pour vous assurer que vous êtes réellement ajouterez que JPanel quelque part. Je voudrais également voir si vous avez assigné quelque chose à jContentPane puisque vous ajoutez seulement la liste si ce panneau est nul. Je suppose que vous n'ajoutez pas le panneau retourné à la boîte de dialogue ou qu'une valeur non nulle a été affectée à jContentPane.

L'appel à myList.setVisible (true) n'a aucun sens car il n'est pas encore ajouté à une fenêtre. Lorsqu'un dialogue est rendu visible, tous ses enfants seront rendus visibles.

+0

salut, initialize private void() { \t \t this.setSize (300, 200); \t \t this.setContentPane (getJContentPane()); \t \t this.setTitle ("Auswahl"); \t} JPanel privé getJContentPane() { \t \t if (jContentPane == null) { \t \t \t jContentPane = new JPanel(); \t \t \t jContentPane.setLayout (nouveau BorderLayout()); \t \t \t jContentPane.add (getJList(), BorderLayout.CENTER); \t \t \t \t \t} \t \t retour jContentPane; \t} voulez-vous dire cela? – Tyzak

+0

@Tyzak - s'il vous plaît modifier votre question pour ajouter le code là-bas. Danke –

+0

Salut, donc la solution a été trouvée, je ne modifie pas la commande, d'accord? – Tyzak