2010-04-18 4 views
5

Wiem, że to bardzo proste pytanie, ale nie mogę znaleźć rozwiązania.Czy otworzyć nowe okno, klikając przycisk?

Mam główne okno dialogowe wahań i inne okno dialogowe. Główne okno dialogowe ma przycisk. Jak mogę to zrobić po kliknięciu przycisku otworzy się drugie okno dialogowe?

EDIT:

Kiedy próbuję to:

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

pojawia się błąd:

Cannot find symbol NewJDialog 

Drugie okno o nazwie NewJDialog ...

+1

Dodaj ActionListener do przycisku (patrz np http://java.sun.com/docs/books/tutorial/uiswing/events/actionlistener.html), w którym otwarcie drugiego okna. – Searles

+1

Jeśli chodzi o edycję, powinieneś nauczyć się różnicy między nazwami klas i nazwami członków, a także powinieneś przyjrzeć się zakresowi zmiennych. NewJDialog w twoim przypadku jest nazwą klasy i ponieważ ta klasa nie istnieje, otrzymasz błąd. – Searles

+0

@Searles: Dobry punkt. Nazwa jest podobna do tej wygenerowanej przez edytor GUI NetBeans. Odpowiedni przykład jest omawiany tutaj: http://stackoverflow.com/questions/2561480 – trashgod

Odpowiedz

6

Będziesz na pewno chcesz spojrzeć na How to Make Dialogs i przejrzeć interfejs API JDialog. Oto krótki przykład na początek. Możesz porównać to z tym, co teraz robisz.

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