#java #arrays #swing #joptionpane
#java #массивы #swing #joptionpane
Вопрос:
У меня возникли трудности с выводом только части массива в JOptionPane.showOptionDialog()
. У меня есть запрос пользователя, запрашивающий целое число от 1 до 10, и я хотел бы вывести это количество элементов из массива.
options = JOptionPane.showInputDialog("How many options would you like?"
"nnPlease 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);
Комментарии:
1. что вы на самом деле хотите отобразить, все n вариантов в одной JOptionPane или JOptionPane для каждого
2. Все n параметров в одной панели, я разобрался с этим самостоятельно. Это было просто задание для моего введения в класс Java.
Ответ №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?"
"nnPlease 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);
}
}