showOptionDialog按钮位于不同的行上

时间:2012-03-02 15:21:07

标签: java swing jdialog joptionpane

无法使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]);

4 个答案:

答案 0 :(得分: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);
            }
        });
    }
}

答案 1 :(得分:2)

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

答案 2 :(得分:1)

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

但是,这样做会破坏一堆UI标准。

答案 3 :(得分: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];