我写了个MainMenu的JFrame界面,里面在处理事件响应时要能调用另一个JFrame界面或Applet界面,但不知为啥原来MainMenu里的部分组建还显示??
    部分代码如下:
        public void actionPerformed(ActionEvent ae)
{   // 按钮事件处理
if (ae.getSource() == button1)
{
JOptionPane.showMessageDialog(MainMenu.this,"欢迎进入演示界面!") ;
buttondemo = new buttonDemo() ;
buttondemo.init();
add(buttondemo) ;
                        setVisible(true);
}
有啥问题??请教啊!!

解决方案 »

  1.   

    buttondemo = new buttonDemo() ; 你为啥要新建一个呢?难道以前的那个已经被销毁了?
      

  2.   

    这是点了button1按钮运行buttonDemo的结果,但MainMenu里的TextArea还显示不知为啥
      

  3.   

    我把代码传上去,大家看看,帮帮找找问题啊!!
    import java.awt.* ;
    import java.awt.event.* ;
    import java.applet.*;
    import javax.swing.* ;public class MainMenu extends JFrame implements ActionListener, MouseListener
    {
    threeButtons three ;
    buttonDemo buttondemo ;
    JLabel title, label ;
    JButton button1 = new JButton("button1") ;
    JButton button2 = new JButton("button2") ;
    TextArea txt1,txt2 ;
    Font fnt = new Font("宋体", Font.BOLD, 20) ; public MainMenu()
    {
    super("学习实例系统") ;
    setSize(550,260) ;
    setLocation(450,240) ;
    setVisible(true) ;

    GridBagLayout gridbag = new GridBagLayout() ;
    GridBagConstraints constraints = new GridBagConstraints() ; JPanel pane = new JPanel() ;
    pane.setLayout(gridbag) ;
    add(pane) ;

    constraints.fill = GridBagConstraints.NONE ;
    constraints.gridwidth = GridBagConstraints.REMAINDER ;
    constraints.insets = new Insets(10,0,0,0) ;
    title = new JLabel("学习实例系统") ;
    title.setFont(fnt) ;
    gridbag.setConstraints(title,constraints) ;
    pane.add(title) ;
     
            // 界面布局分布
    constraints.fill = GridBagConstraints.NONE ;
    constraints.gridwidth = GridBagConstraints.REMAINDER ;
    constraints.anchor = GridBagConstraints.WEST ;
    constraints.insets = new Insets(10,7,0,10) ;  
    label = new JLabel(" 请选择将要进行的服务:") ; 
    gridbag.setConstraints(label,constraints) ;
    pane.add(label) ; constraints.fill = GridBagConstraints.NONE ;
    constraints.gridwidth = 1 ;
    gridbag.setConstraints(button1,constraints) ;
    constraints.insets = new Insets(0,5,5,5) ;  
    button1.setFont(fnt) ;
    pane.add(button1) ;

    constraints.fill = GridBagConstraints.NONE ;
    constraints.gridwidth = GridBagConstraints.REMAINDER ; 
    constraints.weighty = 3 ;
    txt1 = new TextArea(3,30) ;
    gridbag.setConstraints(txt1,constraints) ;
    pane.add(txt1) ;

    constraints.fill = GridBagConstraints.NONE ;
    constraints.gridwidth = 1 ;
    gridbag.setConstraints(button2,constraints) ;
    button2.setFont(fnt) ;
    pane.add(button2) ;

    constraints.fill = GridBagConstraints.NONE ;
    constraints.gridwidth = GridBagConstraints.REMAINDER ; 
    txt2 = new TextArea(3,30) ;
    gridbag.setConstraints(txt2,constraints) ;
    pane.add(txt2) ;

    button1.addActionListener(this) ;
    button1.addMouseListener(this) ;
    button2.addActionListener(this) ;
    button2.addMouseListener(this) ;
    }

    public void mouseEntered(MouseEvent me)
    {
    if (me.getSource() == button1)
    {
    txt1.setText("buttonDemo界面  \n buttonDemo主要包括……") ;
    }
    if (me.getSource() == button2)
    {
    txt2.setText("threeButtons界面  \n threeButtons主要包括……") ;
    }
    }
    public void mouseExited(MouseEvent mt) 

    if (mt.getSource() == button1)
    {
    txt1.setText("") ;
    }
    if (mt.getSource() == button2)
    {
    txt2.setText("") ;
    }
    }
    public void mousePressed(MouseEvent e) { }
    public void mouseClicked(MouseEvent e) { }
    public void mouseReleased(MouseEvent e) { }

    public void actionPerformed(ActionEvent ae)
    {   // 按钮事件处理
    if (ae.getSource() == button1)
    {
    JOptionPane.showMessageDialog(MainMenu.this,"欢迎进入buttonDemo界面!") ;
    buttondemo = new buttonDemo() ;
    buttondemo.init();
    add(buttondemo) ;
                setVisible(true);
    }
    if (ae.getSource() == button2)
    {
    JOptionPane.showMessageDialog(MainMenu.this,"欢迎进入threeButtons界面!") ;
    three = new threeButtons() ;
             three.init() ;
             add(three) ;
                setVisible(true);
            }
    }

        // 主函数
    public static void main(String[] args) 
    {
    JFrame frame = new JFrame() ;
    MainMenu mainmenu = new MainMenu() ;
    frame.getContentPane() ;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) ; //关闭窗口时退出程序
            frame.setVisible(false) ;
    }}
    import java.applet.* ;
    import java.awt.* ;
    import java.awt.event.* ;public class buttonDemo extends Applet implements ActionListener
    {
    TextField txtDept = new TextField(15) ;
    TextField txtName = new TextField(20) ;
    TextField txtPhone = new TextField(5) ;
    TextArea PhoneList = new TextArea(10,30) ;
    Button btn = new Button("Add To List") ;

    String strDept,strName,strPhone ; public void init()
    {
    add(new Label("Department:  ")) ;
    add(txtDept) ;
    add(new Label("Name:        ")) ;
    add(txtName) ;
    add(new Label("Extension:   ")) ;
    add(txtPhone) ;
    add(btn) ;
    add(PhoneList) ;
    txtDept.requestFocus() ;

    btn.addActionListener(this) ;
    txtDept.addActionListener(this) ;
    txtName.addActionListener(this) ;
    txtPhone.addActionListener(this) ;
    }
    public void actionPerformed(ActionEvent e)
    {
    String strOutputLine ;
    strDept = txtDept.getText() ;
    strName = txtName.getText() ;
    strPhone = txtPhone.getText() ;

    strOutputLine = strDept + "\t" + strName + "\t" +strPhone ;
    PhoneList.append(strOutputLine + "\n") ;

    txtDept.setText("") ;
    txtName.setText("") ;
    txtPhone.setText("") ;

    txtDept.requestFocus();
    }

    }
      

  4.   

    代码不全阿,threeButtons的源码没有啊
      

  5.   

    可以了,
    两种办法:
    方法1:
    if (ae.getSource() == button1) {
    JOptionPane.showMessageDialog(MainMenu.this,
    "welcome to buttonDemo panel");
    buttondemo = new buttonDemo();
    buttondemo.init();
    setContentPane(buttondemo);
    validate();
    //add(buttondemo);
    //setVisible(true);
    }
      

  6.   

    方法2:
    if (ae.getSource() == button1) {
    JOptionPane.showMessageDialog(MainMenu.this,
    "welcome to buttonDemo panel");
    buttondemo = new buttonDemo();
    buttondemo.init();
    JFrame frame = new JFrame("test");
    frame.setContentPane(buttondemo);
    frame.pack();
    frame.setVisible(true);
    }
      

  7.   

    在一个里面new另一个,再把原来的销毁就行了!
      

  8.   

    在一个里面new另一个,再把原来的销毁就行了!
      

  9.   

    谢谢啊   呵呵 
    不过我试过dispose(),没用
    还是谢谢啊