2010-04-18 14 views
5

So che è una domanda molto semplice, ma non riesco a trovare una soluzione.Dovrebbe aprire una nuova finestra mentre si fa clic su un pulsante?

Ho una finestra di dialogo altalena principale e un'altra finestra di dialogo altalena. La finestra di dialogo principale ha un pulsante. Come posso fare in modo che dopo aver fatto clic su un pulsante si apra l'altra finestra di dialogo?

EDIT:

Quando provo questo:

private void jButton1MouseClicked(java.awt.event.MouseEvent evt) { 
     NewJDialog okno = new NewJDialog(); 
     okno.setVisible(true); 
    } 

ottengo un errore:

Cannot find symbol NewJDialog 

La seconda finestra si chiama NewJDialog ...

+1

Aggiungi un ActionListener al pulsante (si veda ad esempio http://java.sun.com/docs/books/tutorial/uiswing/events/actionlistener.html), in cui si apre la seconda finestra di dialogo. – Searles

+1

Per quanto riguarda la tua modifica, dovresti imparare la differenza tra i nomi delle Classi ei nomi dei membri, e dovresti anche dare un'occhiata all'ambito delle variabili. NewJDialog nel tuo caso è un nome di classe e poiché questa classe non esiste ottieni l'errore. – Searles

+0

@Searles: buon punto. Il nome ricorda quelli generati dall'editor della GUI NetBeans. Un esempio correlato è discusso qui: http://stackoverflow.com/questions/2561480 – trashgod

risposta

6

Avrete sicuramente vuoi guardare How to Make Dialogs e rivedere l'API JDialog. Ecco un breve esempio per iniziare. Potresti confrontarlo con quello che stai facendo ora.

import java.awt.EventQueue; 
import java.awt.GridLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.ButtonGroup; 
import javax.swing.JDialog; 
import javax.swing.JFrame; 
import javax.swing.JOptionPane; 
import javax.swing.JPanel; 
import javax.swing.JRadioButton; 

public class DialogTest extends JDialog implements ActionListener { 

    private static final String TITLE = "Season Test"; 

    private enum Season { 
     WINTER("Winter"), SPRING("Spring"), SUMMER("Summer"), FALL("Fall"); 
     private JRadioButton button; 
     private Season(String title) { 
      this.button = new JRadioButton(title); 
     } 
    } 

    private DialogTest(JFrame frame, String title) { 
     super(frame, title); 
     JPanel radioPanel = new JPanel(); 
     radioPanel.setLayout(new GridLayout(0, 1, 8, 8)); 
     ButtonGroup group = new ButtonGroup(); 
     for (Season s : Season.values()) { 
      group.add(s.button); 
      radioPanel.add(s.button); 
      s.button.addActionListener(this); 
     } 
     Season.SPRING.button.setSelected(true); 
     this.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); 
     this.add(radioPanel); 
     this.pack(); 
     this.setLocationRelativeTo(frame); 
     this.setVisible(true); 
    } 

    @Override 
    public void actionPerformed(ActionEvent e) { 
     JRadioButton b = (JRadioButton) e.getSource(); 
     JOptionPane.showMessageDialog(null, "You chose: " + b.getText()); 
    } 

    public static void main(String[] args) { 
     EventQueue.invokeLater(new Runnable() { 

      @Override 
      public void run() { 
       new DialogTest(null, TITLE); 
      } 
     }); 
    } 
} 
Problemi correlati