从Jframe child编辑Jframe父级内容

时间:2015-07-08 07:55:34

标签: java swing jframe

抱歉,我刚刚审核了我的小项目,并意识到我不想在JFrame之间传输数据。

就像

Public Class JFrame2 Extends javax.swing.JFrame
{
    public void tryingToDoSomething(int i)
    {
        /*Do something to call setSomething().*/
    }

}

Public Class JFrame1 Extends javax.swing.JFrame
{
    private int something;
    public int setSomething(int something)
    {
        this.something = something;
    }
    private JFrame2 jFrame2 = new JFrame2();
    public void runThings()
    {
        jFrame2.setVisible(true);
    }
}

我在第一个JFrame中有一些内容,我调用第二个JFrame,第二个JFrame,我想要更改第一个JFrame的内容(就像在我的例子中,JFrame1有" int something"和方法" setSomething()",我调用了JFrame2并使用它的方法" tryingToDoSomething(int i)"来设置" int的内容"的JFrame1 )。

非常感谢你的答案。

2 个答案:

答案 0 :(得分:0)

你应该尝试这样做:

public Class JFrame1  extends javax.swing.JFrame{
  private int something;
  public int getSomething()
  {

    return something;
  }
  private JFrame2 jFrame2 = new JFrame2();
  public void runThings()
  {
    jFrame2.tryingToDoSomething();
    jFrame2.setVisible(true);
  }
} 

然后

public Class JFrame2 extends JFrame1 {
 public void tryingToDoSomething()    {
   /*Do something to call getSomething().*/
   getSomething();
 }
}

答案 1 :(得分:0)

  

如何通过第二个JFrame调用第一个JFrame的方法   方法

您需要在第二帧中使用相同的引用。您可以尝试以下方法:

public class JFrame2 extends javax.swing.JFrame
{
    private JFrame1 frame1;// reference
    public JFrame2(JFrame1 frame1) {
       this.frame1 = frame1;// save reference
    }
    public void tryingToDoSomething(int i)
    {
        frame1.setSomething(i);//do something here
    }

}

public class JFrame1 extends javax.swing.JFrame
{
    private int something;
    public int getSomething()
    {
        return something;
    }
    public int setSomething(int something)
    {
       this.something = something;
    }
    private JFrame2 jFrame2 = new JFrame2(this);// note `this`
    public void runThings()
    {
        jFrame2.setVisible(true);
    }
}