【问题标题】:Java: geting return value from other classJava:从另一个类获取返回值
【发布时间】:2014-01-07 19:13:14
【问题描述】:

我只想从其他类中获取在我的 txtfield 中输入的值

public class MyCostumizedDialog{
int x = 0 ;

public void showFrameDialog(){
   // Here are my components...
    txt1 = new Jtextfields;...//my jtxtfield
    .......
    btn1.addactionlister(....){
         x = Integer.parseInt(txt1.gettext());//get string from jtxtfld and parse to int
   }
public int getNumber(){
    return x;
}

}

然后我想像这样从 MyCostumizedDialog 中获取从 jtxtfild 输入的值

public class OtherClass{

    public void frame(){

btn2.addactionlistener(......){
      MyCostumizedDialog mcd = new MyCostumizedDialog();
      mcd .showFrameDialog();
      Double x= mcd.getNumber();
      txtNumber.setText("P "+x);
     }
    }
}

txtnumber总是显示MycostumeDialog中x的初始值,请帮帮我

【问题讨论】:

  • 请修正您帖子的格式 - 目前无法阅读。阅读编辑器的帮助以进行编码;如果要缩进整个代码块,则不需要反引号。
  • 对不起,这是我第一次,非常抱歉,我只是希望有人能帮助我:D
  • 当您检查第一个对话框中的值时,什么会触发第二个对话框更新?您是否希望这会自动发生?
  • 是的,虽然在 MyCostumizedDialog 中按下 btn1 后它会返回 x 的新值

标签: java class return


【解决方案1】:

由于每次按下 btn2 时总是实例化 MyCostumizedDialog 的新实例,因此您会获得 MyCostumizedDialog 的初始值,因为没有人按下 btn1 来设置新创建的实例的值。

如果 btn1 需要用于其他目的,我建议只添加另一个方法来执行与 btn1 操作侦听器完全相同的操作,然后在 btn2 操作侦听器中调用该方法。

【讨论】:

  • 我该怎么办?我想在 OtherClass 中按 btn2,然后 MyCostumizedDialog 会弹出。然后用户将在 txt1 中输入新数据,然后在按 btn1 后它将关闭。我认为它会自动在我的 OtherClass 中返回 x 的新值
  • 由于我假设您需要将 X 的值传递给 OtherClass 而 MyCostumizedDialog 只是一种方法,您可以在 OtherClass 中声明 X 而不是 MyCostumizedDialog 然后只需调用 setter 方法按下 btn1 时的 MyCostumizedDialog 将设置 OtherClass 的声明 X 值
  • 天花板,我只是想在很多课程中使用 MyCostumizedDialog,所以我只想要 JFileChooser 样式这样的方式,非常感谢你的知识
  • 解决方法可能是暂停 btn2 侦听器的执行,直到它接收到一个非“0”的值或经过一定时间。您可以通过在执行 Double x= mcd.getNumber(); 之前保存时间快照来做到这一点,然后只需执行 while((Double x= mcd.getNumber()) != 0) 循环,在该循环内,您可以将当前时间与您在循环之前保存的时间快照进行比较,如果循环运行了很长一段时间,比如 60 秒或其他时间,然后您只需拨打 break; 就不会在发生坏事时陷入无限循环。
【解决方案2】:

您试图在为其设置值之前获取值,换句话说,一旦您单击 btn1,您的 x 就会获取值,但您试图在单击该按钮之前获取 x 的值。

mcd .showFrameDialog();
Double x= mcd.getNumber();

您应该在为变量设置值后调用mcd.getNumber();

【讨论】:

  • SwingUtilities.invokeLater() 应该有帮助
  • 再次从MyCostumizedDialog显示x的初始值,
  • 您期望得到什么?您正在创建新对象,因此您将获得 x 的初始值。而不是 Double x= mcd.getNumber();调用 Double x = Integer.parseInt(mcd.txt1.gettext());您将获得在对话框文本输入中输入的 x 值。不要忘记制作 txt1 成员变量,而不是本地的
  • 如果我这样做,它会在输入文本之前解析它,然后它有一个错误的“空字符串”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-19
  • 1970-01-01
  • 2011-11-14
  • 1970-01-01
相关资源
最近更新 更多