有没有办法在模式对话框中创建JList?

时间:2019-08-20 15:13:13

标签: java swing jlist jdialog

我有一个JFrame已经可见。用户可以加载已保存的会话。

想法是创建一个JList,以便用户可以加载所选的会话并可以更新框架。

下面的代码获取String列表并将其添加到列表中。

DefaultListModel model = new DefaultListModel();
JList list=new JList(model);
JScrollPane pane = new JScrollPane(list);
try {
    for (String  part : Utils.getSessions()) {
        model.addElement(part);
    }
} catch (IOException e1) {
    e1.printStackTrace();
}

下一步:显示步骤。

我发现的是:将窗格添加到当前框架

我的希望:在模式对话框中显示列表

是否可以在模式对话框中创建JList

2 个答案:

答案 0 :(得分:3)

事实证明,uMatrix已经建立了列表选择,无需使用自己的JOptionPane

以下是使用电话:JOptionPane.showInputDialog

这是一个简单的示例:Displaying a dialog with a list of choices

这是一个可以正常工作的示例,可让您选择字体名称(使用在评论中安德鲁给出的方便的字体列表摘录)。

JList

enter image description here

答案 1 :(得分:1)

您可以使用JOptionPane的功能来显示任何组件。使用

JOptionPane.showMessageDialog(frame, list);

获得显示您的JList的模式对话框。您可以通过添加更多参数来进一步自定义此对话框,有关更多信息,请参见here

完整示例:

JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);

String[] options = new String[] {"a", "b", "c"};
JList<String> list = new JList<>(options);

// Shows the dialog
JOptionPane.showMessageDialog(frame, list);

// Do whatever you want with the selection, for example
frame.add(new JLabel(list.getSelectedValue()));
frame.pack();