你好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
}
}
}
答案 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 希望对你有帮助。