三个 类 之间运行时的数据更改和传输

Data Alter & Transfer during Runtime between Three Classes

我做三个classes DataTransfer, RetrieveData and StudSAllR两个classes RetrieveData and StudSAllRJFrame Form

数据传输Class:

我在DataTransferclass中做了一个可变整型的数据成员(Select),做了两个方法getSelect()setSelect(int Select1),代码如下:

class DataTransfer {
     int Select;
     public void setSelect(int Select1){
          Select=Select1;
     }
    public int getSelect(){
         return Select;
    }
}

检索数据Class:

在这个 class 中,我有两个按钮 jButton2jButton4,在这两个按钮的 ActionListener 下,它们都是 DataTransfer class 的对象并设置值在 jButton2 中为 set Select 0 & 1 1 和 jButton4 中的 0 调用 setSelect() 方法,在设置值后两个按钮都指向第三个 class StudSAAllR,下面是给出的代码:

private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    DataTransfer DT = new DataTransfer();
    DT.setSelect(0);
    System.out.println(DT.getSelect()+"RD");
    StudSAllR.main(new String[0]);
}                                        

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    DataTransfer DT = new DataTransfer();
    DT.setSelect(1);
    System.out.println(DT.getSelect()+"RD");
    StudSAllR.main(new String[0]);
}   

StudSAAllR Class:

在这个 class 下,我正在创建 DataTransfer 的对象,现在通过调用 getSelect 方法我返回 select 值但是,

问题是它只返回 0 值,我按 jButton2 或 jButton4 它 returns 0

我还在两个按钮的 ActionListener 中设置了 System.out.println(DT.getSelect()+"RD"); returns jButton2 的值为 1,jButton4 的值为 0

当我在 class 3 中调用此 get 方法时,它 returns 只有零,请大家帮忙!!

这是因为您在按钮的动作侦听器中构造的 DataTransfer 对象对于这些方法而言是本地的。它们的生命周期仅限于该方法的范围。如果你想在不同的class中使用设置值,有不同的方法。

  1. DataTransfer对象传递给其他classStudSAllR的方法,但是你不能使用main()因为main()是应该只接受 String... args 所以创建一个新的静态方法可能叫做 processDataTransfer()

    public static void processDataTransfer( String... args, DataTransfer dt )
    {
    
         int select = dt.getSelect();
    }
    
  2. DataTransfer中的Select设为静态,同时将getSelect()setSelect(int select)设为静态,那么就不需要初始化class 在按钮的动作侦听器中。只是做:DataTransfer.setSelect(1);

在您的 StudSAllR.main(String... args) 中调用 getSelect() 为:

public static void main(String... args)
{
  int select = DataTransfer.getSelect();
}

在1、2中选择什么真的取决于你的要求。