Java将jbutton从Jframe1添加到Jframe2

Java将jbutton从Jframe1添加到Jframe2,java,swing,netbeans,jframe,jbutton,Java,Swing,Netbeans,Jframe,Jbutton,我有一个jframe1和jframe2,它在netbeans中扩展了javax.swing.JFrame(在同一个项目中) jframe2有一个jpanel1。在两个表单之间共享数据的明智方式是什么 尽管JFrame2可能包含一个JPanel,但它没有一个名为jPanel1的字段或变量,因此您不能这样访问它。(在内部,它存储一组组件,您可以通过方法调用来访问它们,但不能通过“名称”来访问它们,这不是一种合适的方法) 在将JPanel添加到其JFrame之前,需要存储对其的引用: JFrame f

我有一个jframe1和jframe2,它在netbeans中扩展了javax.swing.JFrame(在同一个项目中)


jframe2有一个jpanel1。在两个表单之间共享数据的明智方式是什么

尽管
JFrame2
可能包含一个JPanel,但它没有一个名为
jPanel1
的字段或变量,因此您不能这样访问它。(在内部,它存储一组组件,您可以通过方法调用来访问它们,但不能通过“名称”来访问它们,这不是一种合适的方法)

在将JPanel添加到其JFrame之前,需要存储对其的引用:

JFrame frame1 = new JFrame();
JPanel panel1 = new JPanel();
frame1.add(panel1);

JButton bt = new javax.swing.JButton();
bt.setText("from jframe1 button1");
panel1.add(bt);

我猜NetBeans在
Jframe2
中创建了一个名为
jPanel1
的面板。出现错误的原因是,NetBeans默认设置了私有的
jPanel1
可访问性,从外部世界看不到。如果您想这样做,应该将其可访问性更改为
public

一种更优雅的方法:您可以在
JFrame2
中添加一个方法,以便在其视觉外观中添加一个按钮。大致如下:

public class JFrame2 extends JFrame{
  //... 
  public void addButtong(JButton button){
     jPanel1.add(bt);
  }
}
然后像这样使用它:

JButton bt = new javax.swing.JButton();
bt.setText("from jframe1 button1");
Jframe2.addButtong(bt);

您应该有一个对jframe2实际实例的引用。如果您不了解这一点,您不应该构建GUI,但应该开始学习如何使用面向对象编程(OOP)。如果您真的理解了这一点,您应该知道NetBeans中GUI组件的默认访问修饰符是私有的,这可能会导致显示字段jPanel1不可见的错误。

请发布错误以及有关您的情况的更多信息。您看到了什么错误?在你的问题中提供所有相关信息通常是个好主意。