2012-03-02 73 views
2

无法使OptionDialog中的按钮显示在新行上。 它们都出现在一行中,但我希望将它们放在单独的行中。单独行上的showOptionDialog按钮

我也尝试设置一个框架添加到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]); 
+3

'JOptionPane'是当你可以使用它,是一个很大的组成部分。但是如果需要太多的定制,通常更容易推出自己的对话框。 – 2012-03-02 15:27:09

回答

5

考虑这个选择。

combo box options

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); 
      } 
     }); 
    } 
} 
+0

这将工作完美,谢谢。 – 2012-03-02 16:03:04

+0

不客气。 :) – 2012-03-02 16:09:06

2

你不能做到这一点从使用JOptionPane的选项对话框,但你仍然可以通过扩展JDialog创建自己的对话窗口,你将能够使用你想要的布局为组件这种方式。

1

如果您想要分解多行中的按钮,请创建您自己的OptionPane类。尽管如此,你会破坏一堆UI标准。

1

同一种如上答案,但更具体:

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]; 
+0

这是最好的例子,因为它正确处理取消条件。 – 2015-10-07 17:03:13