0

提早问了一个问题,但没有很好地布局我的代码,整个问题有点混乱,然后当我更改了我的代码但仍然有同样的问题时,问题仍然存在,但是我决定重新提出问题我的代码布局更整洁,因此您可以看到重要的部分。

这是最初问题的链接:

无法在 JAVA 中将变量从子级返回给父级(选项窗口)

基本上我有各种各样的课程。其中三个是:

Menu()
HUD()
Options()

我的主要课程是 Menu(),从 Menu() 开始,HUD() 是通过按钮打开的。菜单没有给我带来任何问题,但是,HUD() 和 Options() 是。

Options() 是从 HUD() 内部打开的,里面有 5 个按钮组,它们之间包含 14 个选项。当用户为按钮组选择每个选项时,然后单击应用,并且为每个组选择的单选按钮的值(字符串值)应分配给 HUD() 上的给定变量。但是,当单击应用时,它会清除所有变量,或者这就是它似乎正在做的事情。

在 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();
}  

这是 Option() 类的一部分。

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;
    }

这是 Option() 类中的一个方法:

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() 中打开 Options() 的方式:

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() 的方法,它从 Options() 中获取 JButtons 的值:

public void setTime(String strTime) {

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

1 回答 1

1

我们只看一种方法:

public void setTime(String strTime) {
    strTime = o.getTime();
    txtTime.setText(strTime);
}

您从 Option 类中调用它

hud.setTime(btnTxtTime);

但是setTime忽略您传入的值并立即用o.getTime().

从您发布的内容很难判断,但您可能对方法调用和参数的工作方式感到困惑。

于 2013-02-22T23:50:41.443 回答