1

开始 - 下午 3:00

更新 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();


}  

这是 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);
}

但是,每当我单击“应用”时,Options() 中设置的选项就不会像应有的那样在 HUD() 中显示它们的 TextFields 中设置:/

4

2 回答 2

0

浏览您非常冗长的代码示例很困难,但是请查看您的cmdApplyActionPerformed()方法。您正在创建 anew 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();
于 2013-02-22T15:40:58.987 回答
0

据我了解,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();

于 2013-02-22T15:42:00.450 回答