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

이 대안을 고려하십시오.

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

당신이 할 수있는 JOptionPane의 옵션 대화 상자를 사용하여,하지만 여전히 JDialog을 확장하여 자신의 대화 창을 만들 수 있으며,이 방법은 당신이 당신의 구성 요소에 대해 원하는 레이아웃을 사용할 수 있습니다.

1

여러 행의 단추를 나누려면 고유 한 OptionPane 클래스를 만듭니다.

이렇게하면 UI 표준이 무너질 것입니다.

1

위와 같이 대답의 같은 종류의

combo box options

하지만,보다 구체적인 :

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

취소 조건을 올바르게 처리하는 가장 좋은 예입니다. –

관련 문제