Programmfehler aber warum?

kingharun27

Mitglied
Also meine Frage ist, warum ich diesen Fehler bekomme? Ich verstehe es nicht. Der Fehler ist in der Main-Klasse in der Zeile mit : if(f.getHoch()). Dort ist getHoch unterstrichen und er sagt mir : The method getHoch() is undefined for the type JFrame

Main-Klasse

Java:
package Bewegung;

import javax.swing.JFrame;

public class Hauptprogramm 
{
	
	public static void main(String[] args)
	{		
		JFrame fenster = new Fenster();
		
		while(true)
		{
			if(fenster.getHoch())
			{
				System.out.println("hi");
			}
			
			f.repaint();
			
			try 
			{
				Thread.sleep(20);
			} 
			catch (InterruptedException e) 
			{
				e.printStackTrace();
			}
		}
	}

}

Fenster-Klasse

Java:
package Bewegung;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JFrame;
import javax.swing.JLabel;

public class Fenster extends JFrame
{
	public int Pos_X = 0;
	public int Pos_Y = 0;
	public int Größe = 50;
	
	JLabel Zeichnung;
	Boolean Hoch = false;
	Boolean Runter = false;
	Boolean Rechts = false;
	Boolean Links = false;
	
	
	public Fenster()
	{
		super("Spieltest");
		setLayout(null);
		
		
		//Zeichnen
		Zeichnung = new Bildschirm();
		Zeichnung.setBounds(0, 0, 1050, 750);
		add(Zeichnung);
		
		addKeyListener(new Tastatur());
		setFocusable(true);
		
		//Fenster
		setResizable(false);
		setDefaultCloseOperation(3);
		setSize(1050, 750);
		setLocationRelativeTo(null);
		setVisible(true);
	}
	
	
	
	//Zeichnung
	private class Bildschirm extends JLabel
	{
		@Override
		protected void paintComponent(Graphics g) 
		{		
			//Zeichnung
			super.paintComponent(g);
			
			//Hintergrund
			g.setColor(Color.BLACK);
			g.fillRect(0, 0, 1050, 750);
			
			//Zeichnung
			g.setColor(Color.RED);
			g.fillRect(Pos_X, Pos_Y, Größe, Größe);
		}
	}
	
	//Tastatureingabe
	private class Tastatur implements KeyListener
	{
		@Override
		public void keyPressed(KeyEvent e) 
		{
			if(e.getKeyCode() == KeyEvent.VK_W)
			{
				Hoch = true;
			}
			if(e.getKeyCode() == KeyEvent.VK_A)
			{
				Links = true;
			}
			if(e.getKeyCode() == KeyEvent.VK_S)
			{
				Runter = true;
			}
			if(e.getKeyCode() == KeyEvent.VK_D)
			{
				Rechts = true;
			}
		}

		@Override
		public void keyReleased(KeyEvent e) 
		{
			if(e.getKeyCode() == KeyEvent.VK_W)
			{
				Hoch = false;
			}
			if(e.getKeyCode() == KeyEvent.VK_A)
			{
				Links = false;
			}
			if(e.getKeyCode() == KeyEvent.VK_S)
			{
				Runter = false;
			}
			if(e.getKeyCode() == KeyEvent.VK_D)
			{
				Rechts = false;
			}
		}

		@Override
		public void keyTyped(KeyEvent e) 
		{
			
		}
		
	}
	
	//Getter und Setter
	public Boolean getHoch()
	{
		return Hoch;
	}
	public Boolean getLinks()
	{
		return Links;
	}
	public Boolean getRunter()
	{
		return Runter;
	}
	public Boolean getRechts()
	{
		return Rechts;
	}

}

Danke im Voraus
 
Du hast ja
Java:
JFrame fenster=
geschrieben.
Daher kannst du mit dem Objekt fenster "nur" jene Methoden aufrufen, die JFrame zur Verfügung stellt.
Dass dein konkretes Objekt hier als Fenster erzeugt wird, reicht nicht aus. Der Compiler muss hier damit rechnen, dass "fenster" ja auch mit "new JFrame()" erstellt hätte werden könnte.
 
Moin
The method getHoch() is undefined for the type JFrame
Das sagt doch eigentlich schon alles aus, oder?
Die Klasse JFrame hat keine Methode getHoch und Dein Objekt ist halt von diesem Typ :noe:

BTW: gibt es einen Grund dafür, dass Du Boolean verwendest und nicht boolean ??

Gruß Klaus
 

Zurück
Oben