无法从儿童得到变量回到父母在JAVA(选项窗口)(Cannot get variable from

2019-10-17 17:41发布

入门 - 3:00 PM

更新1 - 下午5:36

在Option()类应用按钮:

     private void cmdApplyActionPerformed(java.awt.event.ActionEvent evt) {                                         
    // TODO add your handling code here:

    hud.setTime(btnTxtTime);
    hud.setTemp(btnTxtTemp);
    hud.setSurface(btnTxtSurface);
    hud.setWeather(btnTxtWeather);
    hud.setRadiation(btnTxtRadiation);
    dispose();


}  

这是选项()类的部分。

    public class Options extends javax.swing.JFrame {

public String btnTxtTime;
public String btnTxtTemp;
public String btnTxtSurface;
public String btnTxtWeather;
public String btnTxtRadiation;
public static boolean ApplyClicked;

/**
 * Creates new form Profile
 */

private HUD hud;

public Options(HUD hud) {
    initComponents();
    this.hud = hud;


}

这是选项的方法()类:

    public String getTime() {

    if ("Day".equals(grpTimeOfDay.getSelection())) {
        btnTxtTime = "Day";
        return this.btnTxtTime;
    }

    if ("Night".equals(grpTimeOfDay.getSelection())) {
        btnTxtTime = "Night";
        return this.btnTxtTime;
    }
    return null;

}

这是怎样的选项()从内HUD()openned:

     private void cmdOptionsActionPerformed(java.awt.event.ActionEvent evt) {                                           
    // TODO add your handling code here:

   Options o = new Options(hud);
    this.getLocation(p);
    o.setLocation((int) p.getX() + 100, (int) p.getY() + 100);
    o.setVisible(true);
}        

这是我的HUD()类的开始:

    public abstract class HUD extends javax.swing.JFrame implements Runnable {


private Options o;
 private HUD hud;

public HUD(Options o) {


    initComponents();
    this.o = o;

这是与HUD()它获取这些Jbutton的值从选项()的方法:

       public void setTime(String strTime) {

    strTime = o.getTime();
    txtTime.setText(strTime);
}

然而,每当我点击应用,在选项(套)不那么,在HUD()像他们应该显示他们的TextField设置的选项:/

Answer 1:

这是很难通过的非常冗长的代码示例导航,但是看看你cmdApplyActionPerformed()方法。 您正在创建一个new HUD()并在其设定值...然后做绝对与它无关。

如果您尝试使用“应用”按钮来修改现有HUD的对象,你的类需要引用它的地方。 如果HUD是创建父类的Options ,试试具有Options存储在其构造父的引用。 然后,当你执行在这样的变化Options ,您可以在父,而不是它有没有效果了新的变数执行它们。

private HUD parent;

/**
 * Creates new form Profile
 */
public Options(HUD parent) {
    initComponents();
    this.parent = parent;
}

然后,在你的事件处理程序,你可以有...

parent.setTime(btnTxtTime);
parent.setTemp(btnTxtTemp);
parent.setSurface(btnTxtSurface);
parent.setWeather(btnTxtWeather);
parent.setRadiation(btnTxtRadiation);
dispose();


Answer 2:

据我了解,HUD是你的“主窗口”和用户获得从该窗口此选项框。

但是你申请的时候,你设置一个新的 HUD,不是你之前所具有的一个属性。

为了解决这个问题,你需要一个句柄到你的主窗口在你的配置窗口,这样就可以在其上设置的属性。

在您的HUD:

ConfigFrame config = new ConfigFrame();
config.setHUD(this);
config.setVisible(true);

在你的配置

private HUD hud;

public void setHUD(HUD hud){
   this.hud = hud;
}

然后就离开了HUD hud = new hud();



文章来源: Cannot get variable from Child back to Parent in JAVA (Options Window)