我做了一个数组列表,从数据库中获取名称。 然后我把arraylist的内容放入一个字符串数组中。 现在我也希望在JList中显示数组内容。
奇怪的是它早先工作了。和我的两种方法。那些只是一点点练习,确保我正确地添加到Jlist。所以关键代码。这是我的代码的布局。
变量 构造函数 方法
在我的变量中我有这3个定义的
String[] contactListNames = new String[5];
ArrayList<String> rowNames = new ArrayList<String>();
JList contactList = new JList(contactListNames);
很简单。
在我的构造函数中,我再次拥有它们。
contactListNames = new String[5];
contactList = new JList(contactListNames);
//i dont have the array list defined though.
printSqlDetails();
// the prinSqldetails was too make sure that the connectionw as alright. and its working fine.
fillContactList();
// this is the one thats causing me grief. its where all the work happens.
// fillContactListTest();
// this was the tester that makes sure its adding to the list alright.
继承了fillContactListTest()
的代码 public void fillContactListTest()
{
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();
}
}
}
继承人认为主要的工作也是如此。
public void fillContactList()
{
int i =0;
createConnection();
ArrayList<String> rowNames = new ArrayList<String>();
try
{
Statement stmt = conn.createStatement();
ResultSet namesList = stmt.executeQuery("SELECT name FROM Users");
try
{
while (namesList.next())
{
rowNames.add(namesList.getString(1));
contactListNames =(String[])rowNames.toArray(new String[rowNames.size()]);
// this used to print out contents of array list
// System.out.println("" + rowNames);
while(i<contactListNames.length)
{
System.out.println(" " + contactListNames[i]);
i++;
}
}
}
catch(SQLException q)
{
q.printStackTrace();
}
conn.commit();
stmt.close();
conn.close();
}
catch(SQLException e)
{
e.printStackTrace();
}
}
我真的需要帮助。我的智慧结束了。我只是不明白为什么第一个方法会添加到JList没有问题。但第二个不会。
contactListNames数组和数组列表都可以正常打印并在其中包含名称。但我必须将他们转移到jlist错误。请帮忙
p.s我知道这很长。但请相信我的简短版本。
答案 0 :(得分:0)
您需要致电
contactList = new JList(contactListNames);
后的
fillContactList();
因为在fillContactList()
内你替换了 contactListNames
引用,而不是填充。
说和无关所描述的问题,代码中有更多的赔率,但你迟早会发现它们我认为:) (代码泄漏了JDBC连接,代码流效率低下,代码没有以直观的OO方式排列等等。但是,这又与所描述的问题无关)。 < / p>