2013-01-19 8 views
7

avere un metodo nel mio progetto GUI per visualizzare un JOptionPane con diversi componenti su di esso, 2 di questi componenti sono ButtonGroups con 2 JRadioButtons in ciascuno, nel primo gruppo viene selezionato il primo pulsante per impostazione predefinita, nel secondo gruppo viene selezionato il secondo pulsante per impostazione predefinita, nel secondo gruppo voglio disattivare il primo pulsante finché non viene selezionato il secondo pulsante del primo gruppo, ovvero se l'utente è soddisfatto della selezione predefinita in BG1, quindi non possono effettuare una selezione in BG2, solo se fanno la seconda selezione in BG1 possono avere l'altra opzione in BG2.Aggiornamento di un JOptionPane per riflettere una modifica dello stato del componente

Questo tipo di comportamento è possibile con un JOptionPane?

Sono state esaminate le esercitazioni per JDialog, JOptionPane e altre ricerche, ma nessuna di queste si è dimostrata utile in questo caso. se qualcuno potesse darmi un po 'di direzione per una possibile soluzione che sarebbe fantastica ...

+2

* "E 'questo tipo di comportamento possibile con un' JOptionPane '?" * Sicuro. fallo nello stesso modo in cui lo faresti in un 'JFrame'. Se non riesci a realizzarlo in una cornice, pubblica un [SSCCE] (http://sscce.org/) del tuo miglior tentativo. –

+4

Il parametro message di 'JOptionPane' prende un' Object'. Se si passa a 'Component', il' JOptionPane' lo userà come vista "principale", aggiungendo l'icona e i pulsanti attorno ad esso – MadProgrammer

+12

Se si sta per rispondere alla propria domanda, si prega di inviare la risposta come risposta e accettare la tua risposta. (In questo modo le persone non perdono tempo a leggere la tua domanda nella speranza di poterla rispondere) – Gus

risposta

0

non penso che sia posible con un JOption. ma penso che sia possibile con un JDialog.

examble:

quando si apre la finestra di dialogo è possibile utilizzare il comando JFrame (qui è necessario scrivere il nome della finestra) .enable (false)

si potrebbe ottenere di avere primo pulsante il contatore si può avere una casella di controllo quando la casella di controllo è vera. mostrerà un pulsante e quando si fa clic che potrebbe rendere il pulsante invisble

0

cosa migliore è andare per JDialog

Perché JOptionPane non sta sostenendo per questo molto di componenti.

0

Nel elective.addActionListener dichiarazione ho chiamato la variabile sbagliato, avevano cp12 invece di cp6, postato il mio taglio verso il basso codice qui sotto, tutto è buono, grazie

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);      
     } 
    } 
Problemi correlati