2010-04-23 3 views
2

Je sais que le titre du son est confus et c'est parce qu'il est. C'est un peu long alors essayez aussi de rester avec moi.Passage tableau dans le constructeur à utiliser sur JList

c'est la mise en page que j'ai mon code conçu

les variables constructeur méthodes. J'essaye aussi de remplir une Jlist complète sur les noms. Je veux aussi obtenir ces noms en utilisant une méthode. alors voilà.

dans mes variables j'ai mon JList. ses noms de contact appelés; J'ai également un tableau qui stocke 5 chaînes qui sont les noms de contacts; Heres le code pour que de toute façon

String contact1; 
String contact2; 
String contact3; 
String contact4; 
String contact5; 

String[] contactListNames; 

JList contactList; 

assez simple. puis dans mon constructeur j'ai le JList défini pour se remplir avec le contenu du tableau

String[] contactListNames = new String[5]; 
    JList contactList = new JList(contactListNames); 
    fillContactList(); 

cette méthode fillContactList() est à venir sous peu.

maintenant heres où les choses se boules. ive a créé trois méthodes différentes qui ont toujours fonctionné. Im essentiellement essayer de remplir le tableau avec chacun d'eux. c'est le plus simple. il ne définit pas la liste J, il ne fait rien de compilié. tout ce qu'il fait aussi est de remplir le tableau un bit à la fois

public void fillContactList() 
     { 
      for(int i = 0;i<3;i++) 
      { 
       try 
       { 
        String contact; 
        System.out.println(" please fill the list at index "+ i); 
        Scanner in = new Scanner(System.in); 
        contact = in.next(); 
        contactListNames[i] = contact; 
        in.nextLine(); 
       } 
       catch(Exception e) 
       { 
       e.printStackTrace(); 
       } 
      } 
     } 

malheureusement cela ne fonctionne pas. je reçois l'impression pour le remplir à l'index 0; i quelque chose d'entrée et je reçois une belle grande trace de la pile à partir de

contactListNames[i] = contact; 

donc ma question en bref est

pourquoi je ne peux pas remplir le tableau de cette méthode.

********************************************** * 888 ******************************************* 888

trace de la pile sur demande s'il vous plaît remplir la liste à l'index 0

overtone 
please fill the list at index 1 
java.lang.NullPointerException 
at project.AdminMessages.fillContactList(AdminMessages.java:410) 
at project.AdminMessages.<init>(AdminMessages.java:91) 
at project.AdminUser.createAdminMessages(AdminUser.java:32) 
at project.AdminUser.<init>(AdminUser.java:18) 
at project.AdminUser.main(AdminUser.java:47) 
+0

Pour répondre à votre première question: oui, vous pouvez passer un tableau dans le constructeur d'un JList. Vous devez simplement corriger l'initialisation du tableau, comme @Jeff l'a suggéré ci-dessous. – Ash

Répondre

2

Pour définir un tableau dans un constructeur, vous pouvez faire quelque chose le long de ces lignes,

// if values are predefined, you can explicitly fill the array 
String[] contacts = {"Bill Gates", "Steve Jobs", "Jon Skeet"}; 

// or this way, both will work. 
String[] contacts = new String[2]; 

regardant JList from the Java Doc's vous pouvez plus passer certainement dans un tableau à JList

String[] data = {"one", "two", "three", "four"}; 
JList dataList = new JList(data); 

Vous obtenez NullPointerException parce que le tableau contactListNames n'est pas initialisé, vous devrez l'initialiser.

+0

ok je l'ai initialisé dans le constructeur et changé le code dans la question pour correspondre à ce qu'il ressemble maintenant. Malheureusement, je reçois toujours cette erreur. dois-je l'initialiser où sont mes variables ou dans le constructeur? – OVERTONE

+0

Il est possible que votre méthode 'fillContactList' ne soit pas visible, initialisez le tableau dans cette méthode ou au-dessus dans votre déclaration de classe, c'est-à-dire en dessous de la ligne' public class MyClass' et voyez ce qui se passe. –

+0

OUI !!!! Génial spectaculaire! le définir en dehors du constructeur comme une taille d'ensemble a parfaitement fonctionné. maintenant je dois le faire fonctionner avec sql .. merci encore mate, – OVERTONE

1

vous définissez un tableau dans un constructeur comme vous le feriez pour tout autre variable. Ainsi, il ressemblerait à quelque chose comme:

// define an array of size 3 
String[] contactListNames = new String[3]; 

La raison pour laquelle vous obtenez des exceptions est que vous n'initialisez pas réellement le tableau. Vous le déclarez mais vous ne le définissez jamais à une valeur (ou lui donnez une taille). Vous devez publier la trace de la pile de l'erreur mais je suppose que c'est une exception NullPointerException.

0

Puis dans mon constructeur i ont le JList défini pour se remplir les contenu du tableau

String[] contactListNames = new String[5]; 
JList contactList = new JList(contactListNames); 
fillContactList(); 

Ce que vous faites ici est de créer de nouvelles variables locales qui sont le Shadowing ceux définis dans votre classe. Changer à:

contactListNames = new String[5]; 
contactList = new JList(contactListNames); 
fillContactList(); 
Questions connexes