ArrayList和JOptionPane.showInputDialog()

时间:2013-04-17 04:13:06

标签: java swing

我正在尝试学习Java并且已经从PHP走了很长一段路,我在创建代码时尝试应用相同的心态。但是,正如你们许多人已经知道的那样,它并不那么容易。

所以说,我有一个问题。我想从ArrayList中的项目创建一个下拉列表。我喜欢使用JOptionPane.showInputDialog()方法来尝试这个的想法。

这就是我目前的情况,但是我收到错误消息告诉我no suitable method found for showInputDialog

ArrayList<String> projectList = new ArrayList<String>();

while(results.next())
    projectList.add(results.getString("project"));

String inputDialog = (String)JOptionPane.showInputDialog(this, "Choose project to open", "Open Project", JOptionPane.PLAIN_MESSAGE, null, projectList, "--");

我知道问题是,当我将ArrayList作为数组对象传递时,我会抛出此错误。但如果我做了像

这样的事情
Object[] projectList = {"one", "two"};

然后它按预期工作,然后尝试执行此操作并传入projects作为我的数组对象。

Object[] projects = {projectList.toString()};

这有点奏效,但输出在下拉列表中看起来像"one, two"为1行。

3 个答案:

答案 0 :(得分:2)

如果需要,您可以使用List.toArray()ArrayList转换为Object[],即:

ArrayList<String> list = new ArrayList<String>();
list.add("one");
list.add("two");
Object[] result = list.toArray();

答案 1 :(得分:1)

projectList是一个ArrayList,将其转换为数组,然后将其传递给方法JOptionPane.showInputDialog()。请检查List.toArray()方法。

String [] projects = projectList.toArray(new String[projectList.size()]);

答案 2 :(得分:1)

尝试以下

    Object[] projectListArray =new Object[projectList.size()];
    projectList.toArray(projectListArray);

String inputDialog = (String)JOptionPane.showInputDialog(this, "Choose project to open", "Open Project", JOptionPane.PLAIN_MESSAGE, null, projectListArray , "--");

希望它有所帮助。