2010-04-18 258 views
5

我知道这是非常简单的问题,但我找不到解决方案。点击按钮时应该打开一个新窗口?

我有一个主要的挥杆对话框和其他挥杆对话框。主对话框有一个按钮。 如何在点击一个按钮后打开另一个对话框?

编辑:

当我试试这个:

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 2010-04-18 17:48:05

+1

关于编辑,您应该了解类名和成员名之间的区别,您还应该查看变量的范围。在你的情况NewJDialog是一个类名称,因为这个类不存在,你会得到错误。 – Searles 2010-04-18 23:38:32

+0

@Searles:好点。该名称让人联想到NetBeans GUI编辑器生​​成的名称。一个相关的例子在这里讨论:http://stackoverflow.com/questions/2561480 – trashgod 2010-04-19 03:36:22

回答

6

你当然想看看How to Make Dialogs并查看JDialog API。这里有一个简短的例子来开始。你可以将它与你现在正在做的事情进行比较。

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); 
      } 
     }); 
    } 
} 
相关问题