Java将Jbutton从Jframe1添加到Jframe2

时间:2012-03-03 23:46:29

标签: java swing netbeans jframe jbutton

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

jframe2有一个jpanel1。在两种形式之间共享数据的明智方法是什么?

3 个答案:

答案 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
相关问题