早い段階で質問をしましたが、コードをうまくレイアウトできず、質問全体が少し混乱しました。コードを変更しても同じ問題が残っているため、質問はまだ残っていますが、質問を再質問することにしました重要なビットを確認できるように、コードをよりきれいにレイアウトしました。
最初の質問へのリンクは次のとおりです。
JAVA で変数を子から親に戻すことができない (オプション ウィンドウ)
基本的に色々なクラスがあります。そのうちの 3 つは次のとおりです。
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;
これは、Options() から JButtons の値を取得する HUD() のメソッドです。
public void setTime(String strTime) {
strTime = o.getTime();
txtTime.setText(strTime);
}