我hava jframe1和jframe2在netbeans中扩展了javax.swing.JFrame。(在同一个项目中)。
jframe2有一个jpanel1。在两种形式之间共享数据的明智方法是什么?
答案 0 :(得分:2)
我想NetBeans在jPanel1
内创建了一个名为Jframe2
的面板。您收到错误的原因是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);
答案 1 :(得分:2)
您应该引用jframe2的实际实例。如果您不理解这一点,那么您不应该构建GUI,但是您应该开始学习如何使用面向对象编程(OOP)。如果您真的了解这一点,您应该知道NetBeans中GUI组件的默认访问修饰符是私有的,这可能会导致错误表明字段jPanel1不可见。
答案 2 :(得分:1)
虽然JFrame2
可能包含 JPanel,但它没有名为{{1}的字段或变量 },所以你不能这样访问它。 (在内部它存储了一组组件,你可以通过方法调用访问它们 - 但不能通过'name'访问它们,这不是一个合适的方法。)
在将JPanel添加到JFrame之前,您需要存储对JPanel的引用:
jPanel1