2013-02-22 1 views
1

는 시작 - 오후 3시다시 JAVA에서 부모에게 아이에서 변수를 가져올 수 없습니다 (옵션 창)

UPDATE 1 - 오후 5시 36분

을 클래스) (옵션에서 버튼을 적용 :

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

이의 시작

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; 


} 

는 옵션의 방법() 클래스 내 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; 

이것은 에서 JButton의의 값을 가져옵니다 HUD()에서 방법 옵션() : 제가 적용을 클릭 할 때마다 그러나, 옵션 (설정 옵션은) 다음 HUD에서 그들을 표시 TextField의 설정되어 있지 않습니다

 public void setTime(String strTime) { 

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

을 () :

+0

아담을 떠나, 나는 당신의 질문의 세 가지 버전을 본 적이 그리고 난에이 (무례한 의도없이) 말하면 곧 그 지점에 도달해야합니다. 이상적으로 첫 번째 문장은 질문을 말해야합니다. 그것은 당신이 무엇을하려고하는지 아직도 명확하지 않지만, 그것이 이벤트와 이벤트 리스너에 대한 검색을한다고 생각한다면 허드는 옵션이 변경되었을 때 발생하는 이벤트를 수신하는 이벤트 리스너를 가질 수 있습니다. – vikki

+0

무례하다는 의미가 아닙니다 어느 쪽이든 그러나 나는 각각에있는 점을 설명했다. 나는 내가 무엇을 필요로하는지 설명 할 수있는 다른 방법을 이해하지 못한다 ... 나는 3 가지 다른 방법으로 그것을 반복했다./ –

+0

내가 말하는 것이 무엇이 필요한지 들리지만 말이다. 그래서이 사실에 좌절감을 느낀다. 나는 제대로 메소드를 이해하지 못한다. 나는 자바에 대한 초보자라고 말했다.하지만 작동하지 않는 똑같은 것을 계속 말하고있다. –

답변

0

매우 긴 코드 샘플을 탐색하기가 어렵지만 cmdApplyActionPerformed() 메소드를 살펴보십시오. new HUD()을 만들고 그 안에 값을 설정하고 있습니다. 그리고 나서 아무 것도하지 마십시오.

"적용"단추를 사용하여 기존 HUD 개체를 수정하려는 경우 클래스에 어딘가에 대한 참조가 필요합니다. HUDOptions을 만드는 부모 클래스 인 경우 해당 생성자에서 부모에 대한 참조를 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(); 
+0

이 모든 것을 설정하고, 개인 메뉴를 만들어야했다. , 일부는 개인적인 옵션을 변경 만든 오류, 지금이 모든 일을하고 있지만,하지만 여전히 HUD에 변수를 변경하지 않습니다 :/ –

0

을 가질 수 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();

+0

HUD() 내 메인 클래스가 아니에요 내 메뉴() 사용자 HUD()하지만, 나는 당신이 의미하는 바를 여러 번 보았고, 무엇을 검색해야 할지를 결정할 수 있었고, 지금 시도하고 구현할 것이며, 당신에게 돌아갈 것입니다! –