Java swing作业窗格:将showInputDialog和showOptionDialog结合起来?
我在这里遵循API: 我有一个要在提示窗口的组合框中显示的项目列表。JOptionPane中的showInputDialog方法允许我这样做,但是它将我限制为两个按钮(ok和cancel)。我希望有更多的按钮(我可以定义更多的按钮,但我不知道如何使用showInputDialog将其添加到此窗口) 我可以使用showOptionDialog创建一个选项数组(包含我需要的所有按钮),但是提示窗口无法显示我的项目列表。通常接受项目数组的参数(在showInputDialog中)现在需要按钮数组Java swing作业窗格:将showInputDialog和showOptionDialog结合起来?,java,swing,user-interface,joptionpane,Java,Swing,User Interface,Joptionpane,我在这里遵循API: 我有一个要在提示窗口的组合框中显示的项目列表。JOptionPane中的showInputDialog方法允许我这样做,但是它将我限制为两个按钮(ok和cancel)。我希望有更多的按钮(我可以定义更多的按钮,但我不知道如何使用showInputDialog将其添加到此窗口) 我可以使用showOptionDialog创建一个选项数组(包含我需要的所有按钮),但是提示窗口无法显示我的项目列表。通常接受项目数组的参数(在showInputDialog中)现在需要按钮数组 O
Object[] selectionValues replaced by Object[] options
有没有办法将它们的功能结合起来
从技术上讲,我可以创建一个新的GUI来实现这一点,但是如果已经有一个现有的实现,我可能会做很多不必要的工作。此外,用户在能够在原始帧上执行任何操作之前,在新的提示窗口上完成任务也很重要
因此,最终,这应该发生:
您可以创建一个包含JComboBox的JPanel,然后将其作为对象参数放入任何JOptionPane中 e、 g
import javax.swing.JComboBox;
导入javax.swing.JOptionPane;
公共类JComboFun{
公共静态void main(字符串[]args){
String[]工作日={“星期一”、“星期二”、“星期三”、“星期四”,
“星期五”};
最终JComboBox组合=新的JComboBox(工作日);
字符串[]选项={“确定”、“取消”、“Fugedaboutit”};
字符串title=“title”;
int selection=JOptionPane.showOptionDialog(空、组合、标题、,
JOptionPane.DEFAULT_选项,JOptionPane.PLAIN_消息,null,
期权,期权[0]);
如果(选择>0){
System.out.println(“选择为:“+options[selection]);
}
Object weekday=combo.getSelectedItem();
如果(工作日!=null){
System.out.println(“工作日:+工作日”);
}
}
}
您可以创建一个包含JComboBox的JPanel,然后将其作为对象参数放入任何JOptionPane中
e、 g
import javax.swing.JComboBox;
导入javax.swing.JOptionPane;
公共类JComboFun{
公共静态void main(字符串[]args){
String[]工作日={“星期一”、“星期二”、“星期三”、“星期四”,
“星期五”};
最终JComboBox组合=新的JComboBox(工作日);
字符串[]选项={“确定”、“取消”、“Fugedaboutit”};
字符串title=“title”;
int selection=JOptionPane.showOptionDialog(空、组合、标题、,
JOptionPane.DEFAULT_选项,JOptionPane.PLAIN_消息,null,
期权,期权[0]);
如果(选择>0){
System.out.println(“选择为:“+options[selection]);
}
Object weekday=combo.getSelectedItem();
如果(工作日!=null){
System.out.println(“工作日:+工作日”);
}
}
}
我有一个项目列表,我想显示在一个组合框中的提示
窗JOptionPane中的showInputDialog方法允许我执行以下操作
不过,我只能按两个按钮(ok和cancel)。我
希望有更多按钮(我可以定义更多按钮,但我
不知道如何使用showInputDialog将其添加到此窗口)
- 您的问题回答得很好,但是不需要额外的努力就可以创建大量的jComponent,然后就可以很容易地将一堆jButton和JComboBox(都是HFOE和camickr的答案)组合到一个JOptionPane中
- :-)
- 您的问题回答得很好,但是不需要额外的努力就可以创建大量的jComponent,然后就可以很容易地将一堆jButton和JComboBox(都是HFOE和camickr的答案)组合到一个JOptionPane中
- :-)
+1始终是向任何选项窗格添加自定义组件的选项。我看不出您在哪里创建了
JPanel
@ryvantage not attack。其中一个选择,我不想创建一个JButtons或JComboBox,为什么?请看我的“笑话”作为一个“答案真棒!!非常感谢:)我不敢相信我错过了那个对象参数。我想我被变量名“message”吓坏了,让我假设它是一个字符串。@ryvantage:是的,你说得对。起初我认为他需要JOptionPane中的更多组件,但后来我发现他所需要的只是JComboBox。关键信息是,任何Swing组件都可以填充到该对象参数中,包括可以想象到的最复杂的JPanel。+1始终是向任何选项窗格添加自定义组件的选项。我看不出您在哪里创建了JPanel
@ryvantage not attack。其中一个选择,我不想创建一个JButtons或JComboBox,为什么?请看我的“笑话”作为一个“答案真棒!!非常感谢:)我不敢相信我错过了那个对象参数。我想我被变量名“message”甩了,mak
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);
}
}
}
import java.awt.EventQueue;
import javax.swing.Icon;
import javax.swing.JOptionPane;
import javax.swing.UIManager;
public class MyOptionPane {
public MyOptionPane() {
Icon errorIcon = UIManager.getIcon("OptionPane.errorIcon");
Object[] possibilities = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
Integer i = (Integer) JOptionPane.showOptionDialog(null,
null, "ShowInputDialog",
JOptionPane.PLAIN_MESSAGE, 1, errorIcon, possibilities, 0);
// or
Integer ii = (Integer) JOptionPane.showInputDialog(null,
"Select number:\n\from JComboBox", "ShowInputDialog",
JOptionPane.PLAIN_MESSAGE, errorIcon, possibilities, "Numbers");
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
MyOptionPane mOP = new MyOptionPane();
}
});
}
}