为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

犯罪嫌疑人X 2023-06-14 16:22:39
我有一个JFrame已经可见的。用户可以加载保存的会话。这个想法是创建一个JList,这样用户就可以加载所选的会话并且可以更新框架。下面的代码获取字符串列表并将它们添加到列表中。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 回答

?
MM们

TA贡献1886条经验 获得超2个赞

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

这是使用的调用:JOptionPane.showInputDialog

这是一个非常简单的示例:显示带有选项列表的对话框

这是一个完整的工作示例,可让您选择字体名称(使用 Andrew 在评论中提供的便捷字体列表片段)。

import java.awt.BorderLayout;

import java.awt.Dimension;

import java.awt.FlowLayout;

import java.awt.GraphicsEnvironment;

import java.awt.Toolkit;

import java.awt.event.ActionEvent;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTextPane;

import javax.swing.SwingUtilities;

import javax.swing.WindowConstants;


public class ListChooserDemo extends JFrame {

  JTextPane textPane = new JTextPane();

  String lastChoice = null;


  public ListChooserDemo() {

    setTitle("List Chooser Demo");

    setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

    setSize(new Dimension(500, 500));

    add(new JScrollPane(textPane), BorderLayout.CENTER);

    JPanel buttonPanel = new JPanel(new FlowLayout());

    add(buttonPanel, BorderLayout.SOUTH);

    JButton b = new JButton("Choose it!");

    textPane.setText("Click the button...");

    b.addActionListener(this::doChooseFont);

    buttonPanel.add(b);

  }


  public void doChooseFont(ActionEvent e) {

    // a handy way to get a nontrivial list of choices for a demo

    String[] choices = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();


    // Show a list of options with no effort on our part.

    String input = (String) JOptionPane.showInputDialog(

            this,                         // optional reference to frame/window or null

            "Choose a font...",           // prompt displayed over list

            "Font Chooser",               // title

            JOptionPane.QUESTION_MESSAGE, // message style

            null,                         // Use default icon for message style

            choices,                      // array of choices

            lastChoice);                  // initial choice or null

    if (input == null) {

      // Handle case when user canceled, didn't select anything, or hit escape

      textPane.setText(textPane.getText() + "\r\nCanceled!");

    } else {

      // Do stuff that happens when a selection was made

      textPane.setText(textPane.getText() + "\r\nSelected " + input);

      lastChoice = input;

    }

  }


  public static final void main(String[] args) {

    // Run in GUI thread

    SwingUtilities.invokeLater(() -> {

      ListChooserDemo frame = new ListChooserDemo();

      // Center in screen and show

      Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();

      frame.setLocation(dim.width / 2 - frame.getSize().width / 2, dim.height / 2 - frame.getSize().height / 2);

      frame.setVisible(true);

    });

  }

}

//img4.sycdn.imooc.com/648978ef0001aeca05630544.jpg

查看完整回答
反对 回复 2023-06-14
?
HUWWW

TA贡献1874条经验 获得超12个赞

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

JOptionPane.showMessageDialog(frame, list);

获得显示您的JList. 您可以通过添加更多参数来进一步自定义此对话框。

一个完整的例子:

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


查看完整回答
反对 回复 2023-06-14
  • 2 回答
  • 0 关注
  • 106 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信