кнопки showOptionDialog на отдельных строках - PullRequest
2 голосов
/ 02 марта 2012

не может заставить кнопки в 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 ]

5 голосов
/ 02 марта 2012

Рассмотрим эту альтернативу.

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);
            }
        });
    }
}
2 голосов
/ 02 марта 2012

Вы не можете сделать это с помощью Option Dialog из JOptionPane, но вы все равно можете создать свое собственное диалоговое окно, расширив JDialog , и таким образом вы сможете использовать макет, который вы хотите для своего компоненты.

1 голос
/ 25 мая 2015

Ответ тот же, что и выше, но более конкретный:

 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];
1 голос
/ 02 марта 2012

Создайте свой собственный класс OptionPane, если вы хотите разбивать кнопки на несколько строк.

При этом вы нарушите кучу стандартов пользовательского интерфейса.

...