showOptionDialog按钮位于不同的行上

无法使OptionDialog中的按钮显示在新行上。 它们都出现在一行中,但我想将它们放在不同的行上。

我也尝试设置一个框架来添加到OptionDialog(设置最大宽度),但它对我来说也没有用。

任何想法/帮助/建议赞赏。

Object[] options = { "Button1", "Button2", "Button3", "Button4", "Button5 On a newLine\n\n", "Button 6", "Button 7" }; int x = JOptionPane.showOptionDialog(null, "Choose a button..", "Title", JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, options[0]); 

考虑这个选择。

组合框选项

 import javax.swing.*; class Options { public static void main(String[] args) throws Exception { SwingUtilities.invokeLater( new Runnable() { public void run() { Object[] options = { "Option 1", "Option 2", "Option 3", "Option 4", "Option 5", "Option 6", "Option 7", "None of the above" }; JComboBox optionList = new JComboBox(options); optionList.setSelectedIndex(7); JOptionPane.showMessageDialog(null, optionList, "Title", JOptionPane.QUESTION_MESSAGE); } }); } } 

你不能使用JOptionPane中的Option Dialog来做到这一点,但你仍然可以通过扩展JDialog来创建自己的对话窗口,这样你就可以使用组件所需的布局。

如果要在多行中断按钮,请创建自己的OptionPane类。

不过,你会打破一堆UI标准。

与上述相同的答案,但更具体:

  Object[] options = outputcdirs; JComboBox optionList = new JComboBox(outputcdirs); optionList.setSelectedIndex(0); JPanel jpan = new JPanel (); jpan.add(new JLabel("Select dirs:")); jpan.add(optionList); int n = JOptionPane.showOptionDialog(this, jpan, "text...", JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE, null, null, null); if (n != -1) n = optionList.getSelectedIndex(); if (n == -1) throw new Exception("No selection: ..."); String value = outputcdirs[n];