Java将jbutton从Jframe1添加到Jframe2
我有一个jframe1和jframe2,它在netbeans中扩展了javax.swing.JFrame(在同一个项目中)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
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不可见的错误。请发布错误以及有关您的情况的更多信息。您看到了什么错误?在你的问题中提供所有相关信息通常是个好主意。