2013-03-15 2 views
1

Я пытаюсь использовать цикл for, чтобы получить имена из моего файла класса в массив String, и отобразить его в меню списка JOptionPane. Тем не менее, я столкнулся с NullPointerException, но если я не объявляю массив String как null, компилятор жалуется.Значения опций в JOptionPane

public void showWindow() 
{ 
    String[] theNames = null; 

    for(int i=0; i<person.length; i++) 
    { 
     if(person[i] != null) 
     { 
      System.out.println(person[i].name); 
     } 
    } 

    String s = (String)JOptionPane.showInputDialog(null, "Select your name and click on confirm", "Results", JOptionPane.PLAIN_MESSAGE, null, theNames, "Eric"); 
} 

Как я могу решить эту проблему без перечислить значения параметров по одному?

+0

Как и где вы заполняете массив строк 'TheNames'? – Smit

ответ

0

Там нет никаких проблем с этой строки кода:

String [] theNames = null; 
     String s=(String)javax.swing.JOptionPane.showInputDialog(null, "Select your name and click on confirm","Results", 
       javax.swing.JOptionPane.PLAIN_MESSAGE, null, theNames, "Eric"); 
     System.out.println(s); 

ПРИМЕЧАНИЕ: Вы должны парафировать theNames, если вы не получите RuntimeException.

и я заметил, что в вашем классе есть переменная Person. Можете ли вы объяснить мне, почему вы инициализируете имена как нуль? Какая польза от этого метода?

0

Параметры могут быть массивом любого объекта, но убедитесь, что метод toString() - это то, что вы хотите отобразить в выпадающем меню. Нет необходимости перечислять параметры по одному или даже конвертировать ваши объекты в строки. Например:

public class Person { 

    String firstName, lastName; 

    public Faculty(String f, String last) { 
    firstName = f; 
    lastName = last; 
    } 

    public String toString() { 
    return firstName + " " + lastName; 
    } 
} 

public static void showWindow() { 
    Person[] guys= new Person[5]; 
    guys[0] = new Person("Dick","Wall"); 
    guys[1] = new Person("Tor","Norbye"); 
    guys[2] = new Person("Chet","Haase"); 
    guys[3] = new Person("Carl","Quinn"); 
    guys[4] = new Person("Scott","Hanselman"); 

    Personp = (Person) JOptionPane.showInputDialog(null, 
    "Pick your favorite podcaster.", 
    "Java Posse", 
    JOptionPane.QUESTION_MESSAGE, null, 
    guys, guys[0]); 

    System.out.println("You picked:" + p.toString()); 
} 
Смежные вопросы