在jframe和jinternalframe之间切换

时间:2012-10-05 09:51:30

标签: java swing jframe jinternalframe

你好stackoverflow开发者我必须设计一个有两个菜单的表格。点击菜单我想在其上添加一个jinternal框架。然后在单击jinternalframe上的按钮后,应删除jinternalframe并在jframe表单上添加新控件。

     import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import javax.event.*;

 class MainMenu extends JFrame implements ActionListener
   {
    JMenuBar mb;
    Menu field,test;
   MainMenu()
  {
  Container cp=this.getContentPane();
   mb= new JMenuBar();
  field1= new JMenu("field1");
  test=new JMenu("test");
  mb.add(field1);
  mb.add(test);

  setJMenuBar(mb);
  field1.addActionListener(this);
 test.addActionListener(this);


}

 public void actionPerformed(ActionEvent ae)
  {
    if(ae.getActionCommand().equals("field1");
   {
     jinternalframe1 frm= new jinternalframe();
     cp.add(frm);
      frm.setBounds(0,0,600,600);
   }

    }

   public static void main(String args[])
   {

   MainMenu frm = new MainMenu();
    frm.setSize(1000,1000);
   frm.setVisible(true);
   }


 }

public class jinternalframe1 extends JInternalFrame implements ActionListener
{

 JButton jb1,jb2;

 jinternalframe1()
{
jb1= new JButton("1");
jb2=new JButton("2");
 add(jb1);
 add(jb2);
 jb1.addActionListener(this);
jb2.addActionListener(this);


 }

 public void actionPerformed(ActionEvent ae)
  {
  if(ae.getActionCommand().equals("1"))
   {
     JButton nn= new JButton("back");
     MainMenu frm= new MainMenu();
    frm.cp.add(nn);
    //this is creating new Form but i want to add the new button control instead of add        //jinternal frame

    }
  }

}

1 个答案:

答案 0 :(得分:1)

将主窗体的实例传递给JInternalFrame

jinternalframe1 frm= new jinternalframe(this); 

在jinternalframe1类中声明MainMenu的对象以指向主类对象。

MainMenu myParent;

修改jinternalframe1构造函数以接受MainMenu实例

 jinternalframe1(MainMenu parent){

   myParent = parent;

   //rest of your code
}

然后在你的actionPerformed中将新按钮添加到myParent实例。

if(ae.getActionCommand().equals("1")){
myParent.add(new JButton("back"));
}

但是让我告诉你,这根本不是一个好习惯!正如trashgod所说,你的代码不是sscce 希望对你有帮助。