2010-04-18 2 views
5

Я знаю, что это очень простой вопрос, но я не могу найти решение.Должно ли открываться новое окно при нажатии кнопки?

У меня есть главный диалог поворота и другой диалог поворота. В главном диалоговом окне есть кнопка. Как это сделать после нажатия кнопки открывается другой диалог?

EDIT:

Когда я пытаюсь это:

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

я получаю ошибку:

Cannot find symbol NewJDialog 

Второе окно называется NewJDialog ...

+1

Добавить ActionListener на кнопку (смотри, например, http://java.sun.com/docs/books/tutorial/uiswing/events/actionlistener.html), в котором вы открываете второй диалог. – Searles

+1

Что касается вашего редактирования, вы должны узнать разницу между именами классов и именами участников, а также взглянуть на область переменных. NewJDialog в вашем случае - это имя класса, и поскольку этот класс не существует, вы получаете ошибку. – Searles

+0

@Searles: Хорошая точка. Имя напоминает файлы, созданные редактором GUI NetBeans. Соответствующий пример обсуждается здесь: http://stackoverflow.com/questions/2561480 – trashgod

ответ

6

Вы будете обязательно просмотрите How to Make Dialogs и просмотрите API JDialog. Вот краткий пример для начала. Вы можете сравнить его с тем, что вы делаете сейчас.

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); 
      } 
     }); 
    } 
} 
Смежные вопросы