2013-01-18 24 views

Trả lời

7

Nếu bạn muốn JOptionPane.showInputDialog với các văn bản nút tùy chỉnh, bạn có thể mở rộng JOptionPane:

public class JEnhancedOptionPane extends JOptionPane { 
    public static String showInputDialog(final Object message, final Object[] options) 
      throws HeadlessException { 
     final JOptionPane pane = new JOptionPane(message, QUESTION_MESSAGE, 
               OK_CANCEL_OPTION, null, 
               options, null); 
     pane.setWantsInput(true); 
     pane.setComponentOrientation((getRootFrame()).getComponentOrientation()); 
     pane.setMessageType(QUESTION_MESSAGE); 
     pane.selectInitialValue(); 
     final String title = UIManager.getString("OptionPane.inputDialogTitle", null); 
     final JDialog dialog = pane.createDialog(null, title); 
     dialog.setVisible(true); 
     dialog.dispose(); 
     final Object value = pane.getInputValue(); 
     return (value == UNINITIALIZED_VALUE) ? null : (String) value; 
    } 
} 

Bạn có thể gọi nó là như thế này:

JEnhancedOptionPane.showInputDialog("Number:", new Object[]{"Yes", "No"}); 
+0

cảm ơn rất nhiều !! Chính xác những gì tôi đang tìm kiếm...! –

8

Mã bên dưới sẽ xuất hiện hộp thoại và bạn có thể chỉ định văn bản nút trong Object[].

Object[] choices = {"One", "Two"}; 
Object defaultChoice = choices[0]; 
JOptionPane.showOptionDialog(this, 
      "Select one of the values", 
      "Title message", 
      JOptionPane.YES_NO_OPTION, 
      JOptionPane.QUESTION_MESSAGE, 
      null, 
      choices, 
      defaultChoice); 

Ngoài ra, hãy đảm bảo xem qua các hướng dẫn Java trên trang web Oracle. Tôi tìm thấy giải pháp tại liên kết này trong hướng dẫn http://docs.oracle.com/javase/tutorial/uiswing/components/dialog.html#create

15

nếu bạn không muốn nó chỉ với một inputDialog duy nhất, hãy thêm các dòng này trước khi tạo hộp thoại

UIManager.put("OptionPane.cancelButtonText", "nope"); 
UIManager.put("OptionPane.okButtonText", "yup"); 

trong đó 'yup' và 'nope' là văn bản bạn muốn hiển thị

+0

cũng rất hữu ích! cảm ơn! –