2010-04-18 12 views
5

Sé que es una pregunta muy simple, pero no puedo encontrar una solución.¿Debería abrir una nueva ventana mientras hace clic en un botón?

Tengo un diálogo de oscilación principal y otro diálogo de balanceo. El diálogo principal tiene un botón. ¿Cómo puedo hacer que, después de hacer clic en un botón, se abra el otro cuadro de diálogo?

EDIT:

Cuando intento esto:

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

consigo un error:

Cannot find symbol NewJDialog 

La segunda ventana se llama NewJDialog ...

+1

Añadir un ActionListener al botón (véase, por ejemplo http://java.sun.com/docs/books/tutorial/uiswing/events/actionlistener.html) en la que se abre el segundo cuadro de diálogo. – Searles

+1

En cuanto a su edición, debe conocer la diferencia entre los nombres de las clases y los nombres de los miembros, y también debe observar el alcance de las variables. NewJDialog en su caso es un nombre de clase y dado que esta clase no existe, obtiene el error. – Searles

+0

@Searles: Buen punto. El nombre es una reminiscencia de los generados por el editor de GUI de NetBeans. Un ejemplo relacionado se discute aquí: http://stackoverflow.com/questions/2561480 – trashgod

Respuesta

6

podrás seguramente quiera mirar How to Make Dialogs y revisar el JDialog API. Aquí hay un pequeño ejemplo para comenzar. Puede compararlo con lo que está haciendo ahora.

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); 
      } 
     }); 
    } 
} 
Cuestiones relacionadas