2012-03-02 3 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' является отличным компонентом, когда вы можете использовать его как есть. Но если требуется слишком много настроек, обычно проще прокручивать собственный диалог. –

ответ

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

Это будет отлично работать, спасибо. –

+0

Добро пожаловать. :) –

2

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

1

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

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

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

Это лучший пример, поскольку он правильно обрабатывает условия отмены. –

Смежные вопросы