2013-01-19 12 views
7

Mam metodę w moim projekcie GUI do wyświetlania JOptionPane z kilkoma komponentami, 2 z nich to ButtonGroups z 2 JRadioButtons w każdym, w pierwszej grupie pierwszy przycisk jest wybrany domyślnie w drugiej grupie drugi przycisk jest wybierany domyślnie, w drugiej grupie chcę, aby pierwszy przycisk był wyłączony do momentu wybrania drugiego przycisku w pierwszej grupie, tj. jeśli użytkownik jest zadowolony z domyślnego wyboru w BG1, wtedy nie mogą dokonać wyboru w BG2, tylko jeśli dokonają drugiej selekcji w BG1, mogą mieć drugą opcję w BG2.Aktualizowanie JOptionPane w celu odzwierciedlenia zmiany stanu komponentu

Czy tego rodzaju zachowanie jest możliwe przy użyciu JOptionPane?

Oglądałem samouczki dla JDialog, JOptionPane i przeprowadzałem inne badania, ale żadna z nich nie okazała się pomocna w tym przypadku. jeśli ktoś mógłby mi dać wskazówki co do możliwego rozwiązania, które byłoby fantastyczne ...

+2

* "to ten rodzaj zachowania możliwe z' JOptionPane '?" * Jasne. zrób to tak samo, jak zrobiłbyś to w 'JFrame'. Jeśli nie możesz tego zrobić w ramce, opublikuj [SSCCE] (http://sscce.org/) najlepszą próbę. –

+4

Parametr komunikatu 'JOptionPane' pobiera" Obiekt ". Jeśli przekażesz mu 'Komponent',' JOptionPane' użyje go jako "głównego" widoku, dodając ikonę i przyciski wokół niego – MadProgrammer

+12

Jeśli masz zamiar odpowiedzieć na własne pytanie, opublikuj swoją odpowiedź jako odpowiedź i zaakceptuj Twoja odpowiedź. (W ten sposób ludzie nie tracą czasu na czytanie twojego pytania w nadziei na odpowiedź) – Gus

Odpowiedz

0

Nie sądzę, że jest to możliwe dzięki JOption. ale myślę, że jest to możliwe z JDialog.

examble:

po otwarciu okna dialogowego można użyć JFrame polecenia (tutaj trzeba napisać swoje imię okno) .enable (fałsz)

można dostać go mieć bliską przycisk w może to oznaczać pole wyboru , jeśli pole wyboru jest prawdziwe. pokaże przycisk i po kliknięciu może sprawić przycisk invisble

0

Najlepszą rzeczą jest pójść na JDialog

Ponieważ JOptionPane nie wspiera tego wiele elementów.

0

W sprawozdaniu elective.addActionListener nazwałem złą zmienną, miał cp12 zamiast cp6, pisał mój wycięte kodu poniżej, wszystko jest dobre, dzięki

public void displayAddSomething(ArrayList<String> items) 
    { 
// cut down version only showing the button panels 

    // initialising the variables  
    JPanel buttPanel = new JPanel(new GridLayout(0, 1)); 
    JPanel pointPanel = new JPanel(new GridLayout(0, 1)); 
    JRadioButton core = new JRadioButton("Core Item: ", true); 
    final JRadioButton elective = new JRadioButton("Elective Item: "); 
    final JRadioButton cp6 = new JRadioButton("6 Points: "); 
    JRadioButton cp12 = new JRadioButton("12 Points: ", true); 
    ButtonGroup bg1 = new ButtonGroup(); 
    ButtonGroup bg2 = new ButtonGroup(); 

    // adding the buttons to buttPanel and the button group 1 
    buttPanel.add(new JLabel("Select Course Type")); 
    buttPanel.add(core); 
    buttPanel.add(elective); 
    buttPanel.setBorder(BorderFactory.createLineBorder(Color.GREEN, 2)); 
    bg1.add(core); 
    bg1.add(elective); 

    // add buttons pointPanel and bg2 
    pointPanel.add(new JLabel("Select Credit Points")); 
    pointPanel.add(cp6); 
    pointPanel.add(cp12); 
    pointPanel.setBorder(BorderFactory.createLineBorder(Color.GREEN, 2)); 
    bg2.add(cp6); 
    bg2.add(cp12); 

    cp6.setEnabled(false); 


    // add action listener for each of bg1 buttons so if event 
    // occurs the cp6 button will toggle between enabled and disabled. 

    elective.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) 
     { 
      cp6.setEnabled(true); 
     }}); 

    core.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) 
     { 
      cp6.setEnabled(false); 
     }}); 

    Object[] message = {buttPanel,pointPanel}; 

    int result = JOptionPane 
     .showOptionDialog(
     this, 
     message, 
     "...some text...", 
     JOptionPane.OK_CANCEL_OPTION, JOptionPane.INFORMATION_MESSAGE, 
     null, new String[] { "Submit", "Cancel" }, "Default"); 

    if (result == JOptionPane.OK_OPTION) 
     { 
     // collecting all the input values in a string array to pass to 
      // another class for processing by the model... 
     } 
    else if (result == JOptionPane.NO_OPTION) 
     { 
      JOptionPane.showMessageDialog(this, 
      "You Have Elected Not to do anything At This Time", 
      "YOU HAVE COME THIS FAR AND YOU QUIT NOW....", 
      JOptionPane.QUESTION_MESSAGE);      
     } 
    } 
Powiązane problemy