开发者

Passing array into constructor to use on JList

I know the title sound confusing and thats because it is. its a bit long so try too stay with me.

this is the layout i have my code designed

variables constructor methods.

im trying too fill a Jlist full on names. i want too get those names using a method. so here goes.

in my variables i have my JList. its called contactNames; i also have an array which stores 5 strings which are the contacts names; heres the code for that anyway

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

String[] contactListNames;

JList contactList;

simple enough. then in my constructor i have the Jlist defined to fill itself with the contents of the array

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

that method fillContactList() is coming up shortly.

now heres where stuff gets balls up. ive created three different methods all of which havent worked. basically im trying to fill the array with all of them. this is the simplest one. it doesnt set the Jlist, it doesnt do anything compilicated. all it trys too do is fill the array one bit at a time

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();   
               }
           }
       }

unfortunately this doesnt qwork. i get the print out to fill it at index 0; i input something and i get a nice big stack trace starting at

    contactListNames[i] = contact;

so my question in short is

why cant i fill the array from that method.

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

stack trace by request please fill the list at 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)


To define an array in a constructor you can do something along these lines,

// 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];

Looking at JList from the Java Doc's you can most certainly pass in an array to JList

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

You are getting NullPointerException because the array, contactListNames is not initialized, you would need to initialize it.


You define an array in a constructor just like you would any other variable. So, it would look something like:

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

The reason you are getting exceptions is because you don't actually initialize the array. You declare it but you never set it to a value (or give it a size). You should post the stack trace of the error but I suspect it's a NullPointerException.


Then in my constructor i have the Jlist defined to fill itself with the contents of the array

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

What you're doing here is creating new local variables that are shadowing the ones defined in your class. Change it to:

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜