我在这里关注API:
http://docs.oracle.com/javase/7/docs/api/javax/swing/JOptionPane.html#showOptionDialog%28java.awt.Component,%20java.lang.Object,%20java.lang.String,%20int,%20int,%20javax.swing.Icon,%20java.lang.Object[],%20java.lang.Object%29
我有一个要在提示窗口的组合框中显示的项目列表。 JOptionPane的showInputDialog方法允许我执行此操作,但是将我限制为两个按钮(确定和取消)。我想拥有更多按钮(我可以定义更多按钮,但是我不知道如何使用showInputDialog将其添加到此窗口中)。
我可以使用showOptionDialog创建选项数组(包含我需要的所有按钮),但是提示窗口无法显示我的项目列表。现在,通常接受项目数组的参数(在showInputDialog中)现在期望按钮的数组。
Object[] selectionValues replaced by Object[] options
有没有办法结合它们的功能?
从技术上讲,我可以创建一个新的GUI来执行此操作,但是如果已经有一个现有的实现,那么我可能会做很多不必要的工作。同样重要的是,用户必须先在新的提示窗口上完成任务,然后才能在原始框架上执行任何操作。
所以最后,这应该发生:
用户单击某些内容,将出现一个提示窗口。
提示窗口显示一个组合框(投递箱?)项目列表。
用户选择以下项之一,然后可以选择按确定,取消,
跳过...(我定义的任意数量的按钮)
3a。直到其中一个按钮,用户才能在原始GUI上执行任何操作
在新的提示窗口上已单击。
当单击其中一个按钮时,它将执行其功能,并且
用户可以进行主GUI。
最佳答案
您可以创建一个包含JComboBox的JPanel,然后将其放入您想要作为Object参数的任何JOptionPane中。
例如。,
import javax.swing.JComboBox;
import javax.swing.JOptionPane;
public class JComboFun {
public static void main(String[] args) {
String[] weekdays = { "Monday", "Tuesday", "Wednesday", "Thursday",
"Friday" };
final JComboBox<String> combo = new JComboBox<>(weekdays);
String[] options = { "OK", "Cancel", "Fugedaboutit" };
String title = "Title";
int selection = JOptionPane.showOptionDialog(null, combo, title,
JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE, null,
options, options[0]);
if (selection > 0) {
System.out.println("selection is: " + options[selection]);
}
Object weekday = combo.getSelectedItem();
if (weekday != null) {
System.out.println("weekday: " + weekday);
}
}
}