Variablen abfragen von Boolean von anderer Klasse

cool_brivk24

Mitglied
Hallo liebes Forum:

Ich programmiere grade eine Anwendung und mir ist aufgefallen, dass ich ein Boolean in einer anderen Klasse habe, muss diesen aber in meiner Main Klasse abfragen ob dieser Wahr oder Falsch ist. Habt ihr eine Idee?

Beispiel:
Mein Boolean heißt z.B. "Tag" und steht standartweise auf "True". Wenn ich eine bestimmte Aktion ausführe, soll "Tag" auf "False" stehen. "Tag" will ich in meiner HauptKlasse Abfragen. (Dies geht leider nur in dieser)

MFG

-cool_brick24
 
Ich hab mir jetzt in der Klasse eine Getter und Setter Methode per Java erstellen lassen.
Java:
public boolean isTag() {
        return Tag;
    }

Doch jetzt kommt es zu Abfrage in meiner HauptKlasse.
Bisher habe ich:
Java:
if(MeineAndereKlasse.this.isTag() == true) {
     }
Ich kann es leider nicht ohne "this" machen. Aber auch wenn ich das "this" benutze wird mir "MeineAndereKlassse.this" rot unterstrichen.
Idk

Ich hoffe ihr/du könnt/kannst mir weiterhelfen.

Mfg

-cool_brick24
 
Du musst schon eine Instanz deiner Klasse anlegen.
Java:
MeineAndereKlasse instance = new MeineAndereKlasse();
instance.isTag()
 
Okay. Vielen Dank. Ich habe das jetzt mit einem KeyListener gemacht, der bei mir nicht funktioniert. Wäre es möglich das ihr/du mir hilfst/helft?

TagNacht.java:
Java:
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;



public class TagNacht implements KeyListener{

    public boolean Tag = true;
 
 
    public boolean isTag() {
        return Tag;
    }
    public void setTag(boolean tag) {
        Tag = tag;
 
    }
 
 
 
    @Override
    public void keyPressed(KeyEvent e) {
        if(e.getKeyCode() == KeyEvent.VK_R) {
            System.out.println("R");
            Tag = true;
        } else if(e.getKeyCode() == KeyEvent.VK_T) {
            System.out.println("T");
            Tag = false;
        }
     
    }
    @Override
    public void keyReleased(KeyEvent e) {
 
     
    }
    @Override
    public void keyTyped(KeyEvent arg0) {
        // TODO Auto-generated method stub
     
    }

}

MFG

-cool_brick24
 
Ich frage ab, wenn ich die Taste R drücke, dass dann der Tag auf "true" ist und wenn ich die Taste T drücke dert Tag auf "false" ist.

Doch bei mir wird in der Konsole kein R oder T ausgegeben
 
KeyListener hat auch nichts in Konsolen-Programmen zu suchen sondern nur in Programmen mit GUI.
Du musst auf Konsoleneingaben reagieren .. dazu kannst du dir bspw. mal die Klasse Scanner anschauen.
 
Okay. Scanner kenn ich noch soweit. Nur in dieser Anwendung, kann man nirgendswo etwas reinschreiben. D.h. man kann es nur mit einem Tastendruck machen.

Trozdem Vielen Dank
 
ich programmiere derweil ein Spiel mit libGDX. Es existiert schon ein FirstPersonShooter Controller, bei dem man KeyEvents abfragen kann. Den muss man natürlich überschreiben, aber die Keycodes funktionieren. Ausschnitt:
Java:
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Input.Keys;
import com.badlogic.gdx.graphics.Camera;
import com.badlogic.gdx.graphics.g3d.utils.FirstPersonCameraController;
public class FPSControll extends FirstPersonCameraController{
 
 
 public FPSControll(Camera camera) {
  super(camera);
 }
 
 
 @Override
 public boolean mouseMoved(int screenX, int screenY) {
  touchDragged(screenX, screenY, 0);
  return super.mouseMoved(screenX, screenY);
 }
 
 @Override
 public boolean keyDown(int keycode) {
  if(keycode == Keys.ESCAPE) {
   Gdx.app.exit();
  }else if(keycode == Keys.Z) {
   Gdx.input.setCursorCatched(false);
  } else if(keycode == Keys.U) {
   Gdx.input.setCursorCatched(true);
    }         //else if(keycode == Keys.R) {
             //Gdx.gl.glClearColor(0.5f, 0.8f, 1f, 1f);
               //} else if(keycode == Keys.T) {
                //Gdx.gl.glClearColor(2f, 2f, 2f, 1f);
 
 
  return super.keyDown(keycode);
 }
}

Doch wenn ich versuche eine Instance von dieser Klasse zu erstellen muss ich oben "public FPSControll(….)" benutzen und somit meine Cam angeben, obwohl ich nur ein boolean auf true or false stellen möchte. Also habe ich dies mit einer Extra Klasse gemacht. Dies ist die TagNacht Klasse:

Java:
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

public class TagNacht implements KeyListener{
 public boolean Tag = true;
 
 
 public boolean isTag() {
  return Tag;
 }
 public void setTag(boolean tag) {
  Tag = tag;
 
 }
 
 
 
 @Override
 public void keyPressed(KeyEvent e) {
  if(e.getKeyCode() == KeyEvent.VK_R) {
   System.out.println("R");
   Tag = true;
  } else if(e.getKeyCode() == KeyEvent.VK_T) {
   System.out.println("T");
   Tag = false;
  }
 
 }
 @Override
 public void keyReleased(KeyEvent e) {
 
 
 }
 @Override
 public void keyTyped(KeyEvent arg0) {
  // TODO Auto-generated method stub
 
 }
}

mfg

-cool_brick24
 
Also versteh ich das richtig: Du hast deine Controller Klasse FPSControll welche, wenn eine bestimmte Taste gedrückt wird, einen boolean einer anderen Klasse verändern soll.
Wenn ja müsstest du die Klasse, in der der boolean liegt, in die FPSControll Klasse hineingeben (über den Konstruktor) und das am Besten schon an der Stelle, wo du die Instanz der FPSControll Klasse erstellst.
 

Zurück
Oben