【问题标题】:How do I output only part of an array with JOptionPane?如何使用 JOptionPane 仅输出数组的一部分?
【发布时间】:2016-10-23 06:04:55
【问题描述】:

我很难将数组的一部分输出到JOptionPane.showOptionDialog()。我有一个用户提示要求输入 1-10 之间的整数,并希望从数组中输出该数量的项目。

options = JOptionPane.showInputDialog("How many options would you like?"+
                        "\n\nPlease note that you must input a number between 1-10");

try{
    numberofoptions = Integer.parseInt(options);
}
catch(NumberFormatException e){
    JOptionPane.showMessageDialog(null, "Remember to only input a numerical integer");
}

JOptionPane.showOptionDialog(null, "Please select a restaurant.", "Restaurant Selector",
    JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, Restaurants, Restaurants[0]);

exit = JOptionPane.showConfirmDialog(null, "Do you wish to continue?", "Restaurant Selector", 
        JOptionPane.YES_NO_OPTION);

【问题讨论】:

  • 您真正想要显示什么,一个 JOptionPane 中的所有 n 个选项或每个 JOptionPane 中的选项
  • 一个窗格中的所有 n 个选项,不过我自己想出来的。这只是我对 java 类的介绍。

标签: java arrays swing joptionpane


【解决方案1】:

您可以使用Arrays.copyOf 方法获取第一个n 餐厅:

import java.util.Arrays;
import javax.swing.*;

public class ArraySubset {
    public static void main(String[] arguments) {
        SwingUtilities.invokeLater(() -> new ArraySubset().createAndShowGui());
    }

    private void createAndShowGui() {
        JFrame frame = new JFrame("Stack Overflow: part of an array");
        frame.setBounds(100, 100, 800, 600);
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        JPanel panel = new JPanel();
        JButton button = new JButton("Let's pick a restaurant");
        button.addActionListener(actionEvent -> pickRestaurant());
        panel.add(button);
        frame.getContentPane().add(panel);

        frame.setVisible(true);
    }

    private void pickRestaurant() {
        String[] allRestaurants = {
                "Restaurant 1", "Restaurant 2", "Restaurant 3", "Restaurant 4", 
                "Restaurant 5", "Restaurant 6", "Restaurant 7", "Restaurant 8", 
                "Restaurant 9", "Restaurant 10"
        };

        int numberOfOptions = allRestaurants.length;

        try {
            String messageNumberOfOptions = "How many options would you like?" +
                                            "\n\nPlease note that you must input " +
                                            "a number between 1-10";

            String options = JOptionPane.showInputDialog(messageNumberOfOptions);

            numberOfOptions = Integer.parseInt(options);
        }
        catch (NumberFormatException e) {
            JOptionPane.showMessageDialog(null, 
                                          "Remember to only input a numerical integer");
        }

        String[] someRestaurants = Arrays.copyOf(allRestaurants, numberOfOptions);

        JOptionPane.showOptionDialog(null, "Please select a restaurant.", 
                                     "Restaurant Selector",
                                     JOptionPane.YES_NO_OPTION, 
                                     JOptionPane.QUESTION_MESSAGE, 
                                     null,
                                     someRestaurants, someRestaurants[0]);

        int exit = JOptionPane.showConfirmDialog(null, "Do you wish to continue?",
                                                 "Restaurant Selector",
                                                 JOptionPane.YES_NO_OPTION);

        System.out.println("exit: " + exit);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    相关资源
    最近更新 更多