"Verrutschen" von Komponenten bei repaint()

Status
Nicht offen für weitere Antworten.
F

Frost_

Gast
Hallöchen,

ich habe mal ein kleines Snake Spiel geschrieben und wollte nun noch einen Punktezähler einbauen.
Dazu will ich mein JFrame so aufteilen, dass oben die Punkte in einem JLabel angezeigt werden und darunter in einem JPanel das Spiel abläuft.
Problem:
Kurz nach Programmstart verrutscht alles etwas nach unten und ist doppelt da. Dazu auch zwei Bilder:

So sieht es einen kurzen Moment nach Programmstart aus ( so sollte es auch sein )


So sieht es danach aus ( ist ein neues Spiel mit anderen Koordinaten für den grünen Punkt, daher ist der so weit unten )


Und zwar passiert das im zweiten Durchlauf der while Schleife in 48 - 59.
Das erste repaint() in 50 funktioniert also noch. ( habe das mit einer längeren Sleep Zeit getestet )
Sobald man die Schlange über die verrutschten Sachen bewegt verschwinden diese.

Auch tritt das Problem nicht mehr auf, nachdem man einmal vor die Wand gefahren und die Zeichenfläche mit meiner clear() Methode geleert wird.

Erläuterungen zum Quellcode:
drawSnake ist die Zeichenfläche auf der das Spiel ablaufen soll. Sie erbt von JPanel
In der paint Methode davon zeichne ich jeweils nur das Futter (grün), das erste Segement der Schlange (schwarz) und übermale das letzte Segement mit der Hintergrundfarbe.
Rufe ich clear() auf, so übermalt er mir vorher alles mit der Hintergrundfarbe.

Wäre schön wenn mir da jemand helfen könnte.

Java:
public class SnakeGame extends Thread {

	SnakeField field;
	Snakelist snake;
	int foodX;
	int foodY;
	JFrame snakeFrame;
	Zeichenflaeche drawSnake;
	final int dimX = 24;
	final int dimY = 19;
	MyKeyListener steuerung;
	
	public static void main(String[]args) {
		
		SnakeGame game = new SnakeGame();
		game.start();
		
	}
	
	SnakeGame() {
		field = new SnakeField (dimX, dimY);
		foodX = field.foodX;
		foodY = field.foodY;
		JPanel top = new JPanel();
		
		drawSnake = new Zeichenflaeche(dimX,dimY,field);
		snakeFrame = new JFrame();
		snakeFrame.setLayout(new BorderLayout());
		
		top.add(new JLabel("Punkte: "+0));
		
		snakeFrame.setSize(800, 600);
		snakeFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		steuerung = new MyKeyListener();
		snakeFrame.addKeyListener(steuerung);
		snakeFrame.getContentPane().add(top,BorderLayout.NORTH);
		snakeFrame.getContentPane().add(drawSnake,BorderLayout.CENTER);
		
		snakeFrame.setResizable(false);
		
		snakeFrame.setVisible(true);
	}
	
	public void run() {
		
		while ( true ) {
			boolean collision = false;
			while ( !collision ) {
				collision = field.simulateOneStep(steuerung.getAlignment());
				drawSnake.repaint();
				foodX = field.foodX;
				foodY = field.foodY;
				try {
					sleep(100);
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			try {
				sleep(300);
			} catch (InterruptedException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
			field.reset(dimX, dimY);
			drawSnake.clear();
			steuerung.reset();
		}
	}
}

class Zeichenflaeche extends JPanel {
	
	SnakeField field;
	int dimX;
	int dimY;
	int width;
	int height;
	boolean clear;
	
	Zeichenflaeche(int dX, int dY, SnakeField f) {
		super();
		clear = false;
		dimX = dX;
		dimY = dY;
		field = f;
	}
	
	public void clear() {
		clear = true;
		repaint();
	}
	
	public void paint(Graphics g) {
		Color bg = this.getBackground();
		width = getWidth() / dimX;
		height = getHeight() / dimY;
		if ( clear ) {
			g.setColor(bg);
			g.fillRect(0, 0, getWidth(), getHeight());
			clear = false;
		}
		g.setColor(Color.green);
		g.fillRect(field.foodX*width, field.foodY*height, width, height);
		g.setColor(bg);
		g.fillRect(field.getSnake().getTail().getX()*width, field.getSnake().getTail().getY()*height, width, height);
		g.setColor(Color.black);
		g.fillRect(field.getSnake().getHead().getX()*width, field.getSnake().getHead().getY()*height, width, height);
	}
	
}
 
Zuletzt bearbeitet von einem Moderator:

Schandro

Top Contributor
überschreib "paintComponent" statt "paint" und ruf innerhalb von "paintComponent" als erstes "super.paintComponent(g);" auf

Sollte man grundsätzlich immer machen vllt. liegt dein Grafikbug auch dadran.
 
F

Frost_

Gast
Erstmal danke für die schnelle Antwort.

Funktioniert mit der Änderung aber leider noch genauso wenig.

/edit sagt:

Ups, hab super.paintComponents gehabt statt super.paintComponent.

Jetzt hab ich das Problem mit dem verrutschen nicht mehr, dafür wird die Schlange in jedem Schritt komplett übermalt, sodass nur noch das erste Segement da ist
 
Zuletzt bearbeitet von einem Moderator:

Schandro

Top Contributor
Jep, beim neuzeichnen wird das Fenster jedesmal komplett geleert. (Falls du das nicht willst, kannst du der Methode repaint Parameter mitgeben (siehe API), dann wird nur der gegeben Abschnitt neugemalt. Sowas sollte aber nur für Performancezwecke genutzt werden!)

Java:
        g.fillRect(field.getSnake().getTail().getX()*width, field.getSnake().getTail().getY()*height, width, height);
        g.setColor(Color.black);
        g.fillRect(field.getSnake().getHead().getX()*width, field.getSnake().getHead().getY()*height, width, height);
Du malst nur 2 Rechtecke, deswegen kann es eh nie eine richtige Schlange ergeben. Ansonsten: Poste den restlichen Code.
 
F

Frost_

Gast
Ja, die beiden Rechtecke die ich da male sind einmal der neue Schlangenkopf und das Ende der Schlange, dass ich mit der Hintergrundfarbe wieder übermalen möchte.

Eben aus "Performancegründen" ( auch wenn man es nicht wirklich merken dürfte ) will ich nicht die ganze Schlange neu zeichnen. Die Schlange realisiere ich intern mit einer ConcurrentLinkedQueue. Wenn ich sie komplett neuzeichnen will müsste ich die Queue auf ein Array abbilden und das Array elementweise durchgehen. Dann bestünde das Problem auch nicht.
Das repaint mit Parameter dürfte hier wohl auch nicht dazu führen dass es so funktioniert wie ich es gern hätte. Müsste ja trotzdem jedes Mal den Hintergrund löschen, was auch wieder den Rest meiner Schlange killen würde.

Oder ist es einfach so, dass man alles neu zeichnen muss ( sprich, erst Hintergrund und dann was man davor haben will ), wenn man keine Fehler haben möchte?

Wie auch immer, hier der komplette Quelltext:

Java:
import java.util.concurrent.ConcurrentLinkedQueue;


public class Snakelist {
	
	private ConcurrentLinkedQueue<Snakenode> snake;
	private Snakenode head;
	/**
	 * Creates a new Snake Object. 
	 * @param initX
	 * @param initY
	 * @param initLenght
	 * @param alignment -- 0 = North, 1 = East, 2 = South, 3 = West, 4 = None
	 */
	public Snakelist(int initX, int initY, int initLenght, int alignment) {
		snake = new ConcurrentLinkedQueue<Snakenode>();
		snake.offer(new Snakenode ( initX, initY, 4 ));
		initLenght--;
		while ( initLenght > 0 ) {
			switch ( alignment ) {
			case 3 : 
				initX--;
				break;
			case 1 :
				initX++;
				break;
			case 2 :
				initY--;
				break;
			case 0:
				initY++;
				break;
			}
			initLenght--;
			head = new Snakenode ( initX, initY, 4 );
			snake.offer(head);
		}
	}
	
	public Snakenode getHead() {
		return head;
	}
	public Snakenode getTail() {
		return snake.peek();
	}
	public ConcurrentLinkedQueue<Snakenode> getSnake() {
		return snake;
	}
	
	
	public void move(int newAlignment, boolean eaten) {
		
		if ( !eaten ) {
			snake.poll();
		}
		
		int newX = head.getX();
		int newY = head.getY();
		int chosenAlignment = 0;
		if ( newAlignment != (head.getAlignment()+2)%4 ) {	
			chosenAlignment = newAlignment;
		} else {
			chosenAlignment = head.getAlignment();
		}
		switch(chosenAlignment) {
		case 1:
			newX++;
			break;
		case 2:
			newY++;
			break;
		case 3:
			newX--;
			break;
		case 0:
			newY--;
			break;
		}
		head = new Snakenode(newX,newY,chosenAlignment);
		snake.offer(head);
	}
	
}


	
	/**
	 * Represents the single segements of the snake
	 * @author gwue
	 *
	 */
class Snakenode {
	
	private int alignment;
	private int coordX;
	private int coordY;
	
	/**
	 * Creates a new body segement
	 * @param initX
	 * @param initY
	 * @param alignment -- 0 = North, 1 = East, 2 = South, 3 = West
	 */
	Snakenode (int initX, int initY, int alignment ) {
		coordX = initX;
		coordY = initY;
		this.alignment = alignment;
	}

	int getX() {
		return coordX;
	}
	int getY() {
		return coordY;
	}
	int getAlignment() {
		return alignment;
	}
}
Java:
public class SnakeField {

	private Snakelist snake;
	boolean [][]area;
	boolean eaten;
	int foodX;
	int foodY;
	
	SnakeField(int dimX, int dimY ) {
		reset(dimX, dimY);
	}
	
	private void newFood() {
		boolean valid = false;
		int newX=0;
		int newY=0;
		while ( !valid ) {
			newX = (int)(Math.random()*area.length);
			newY = (int)(Math.random()*area[0].length);
			if ( !area[newX][newY])
				valid = true;
		}
		foodX = newX;
		foodY = newY;
	}
	public void reset(int dimX, int dimY) {
		area = new boolean[dimX][dimY];
		for ( int i = 0; i < area.length; i++ ) {
			for ( int j = 0; j < area[0].length; j++ ) {
				area[i][j] = false;
			}
		}
		snake = new Snakelist ( dimX/2, dimY/2, 2, 4);
		newFood();
	}
	
	public Snakelist getSnake() {
		return snake;
	}
	
	/**
	 * Moves the snake 1 field
	 * @param alignment where the snake shall go
	 * @return true if collided into tail or wall, false if not
	 */
	public boolean simulateOneStep(int alignment) {
		//if (alignment != 4 ) {
			eaten = false;
			if ( snake.getHead().getX() == foodX && snake.getHead().getY() == foodY ) {
				eaten = true;
				newFood();
			}
			snake.move(alignment, eaten);
			if ( !eaten ) {
				area[snake.getTail().getX()][snake.getTail().getY()] = false;
			}
			if ( snake.getHead().getX() < 0 || snake.getHead().getX() >= area.length
					|| snake.getHead().getY() < 0 || snake.getHead().getY() >= area[0].length 
				|| area[snake.getHead().getX()][snake.getHead().getY()] ) {	
				return true;
			}
			else {
				area[snake.getHead().getX()][snake.getHead().getY()] = true;
			}
		//}
		return false;
	}	
}
Java:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.concurrent.ConcurrentLinkedQueue;

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

public class SnakeGame extends Thread {

	SnakeField field;
	Snakelist snake;
	int foodX;
	int foodY;
	JFrame snakeFrame;
	int snakepoints;
	Zeichenflaeche drawSnake;
	final int dimX = 24;
	final int dimY = 19;
	JLabel punkteLabel;
	MyKeyListener steuerung;
	
	public static void main(String[]args) {
		
		SnakeGame game = new SnakeGame();
		game.start();
		
	}
	
	SnakeGame() {
		snakepoints = 0;
		field = new SnakeField (dimX, dimY);
		foodX = field.foodX;
		foodY = field.foodY;
		JPanel top = new JPanel();
		
		drawSnake = new Zeichenflaeche(dimX,dimY,field);
		snakeFrame = new JFrame();
		snakeFrame.setLayout(new BorderLayout());
		punkteLabel = new JLabel("Punkte: "+snakepoints);
		top.setLayout(new FlowLayout());
		top.add(punkteLabel);
		
		snakeFrame.setSize(800, 600);
		snakeFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		steuerung = new MyKeyListener();
		snakeFrame.addKeyListener(steuerung);
		snakeFrame.getContentPane().add(top,BorderLayout.NORTH);
		snakeFrame.getContentPane().add(drawSnake,BorderLayout.CENTER);
		
		snakeFrame.setResizable(false);
		snakeFrame.setVisible(true);
	}
	
	public void run() {
		
		while ( true ) {
			boolean collision = false;
			while ( !collision ) {
				collision = field.simulateOneStep(steuerung.getAlignment());
				if ( field.eaten ) {
					snakepoints++;
					punkteLabel.setText("Punkte: "+snakepoints);
				}
				drawSnake.repaint();
				foodX = field.foodX;
				foodY = field.foodY;
				try {
					sleep(100);
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			try {
				sleep(300);
			} catch (InterruptedException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
			snakepoints = 0;
			punkteLabel.setText("Punkte: "+snakepoints);
			field.reset(dimX, dimY);
			drawSnake.clear();
			steuerung.reset();
		}
	}
}

class Zeichenflaeche extends JPanel {
	
	SnakeField field;
	int dimX;
	int dimY;
	int width;
	int height;
	boolean clear;
	
	Zeichenflaeche(int dX, int dY, SnakeField f) {
		super();
		clear = false;
		dimX = dX;
		dimY = dY;
		field = f;
	}
	
	public void clear() {
		clear = true;
		repaint();
	}
	
	public void paintComponent(Graphics g) {
		//super.paintComponent(g);
		Color bg = this.getBackground();
		width = getWidth() / dimX;
		height = getHeight() / dimY;
		if ( clear ) {
			g.setColor(bg);
			g.fillRect(0, 0, getWidth(), getHeight());
			clear = false;
		}
		g.setColor(Color.green);
		g.fillRect(field.foodX*width, field.foodY*height, width, height);
		g.setColor(bg);
		g.fillRect(field.getSnake().getTail().getX()*width, field.getSnake().getTail().getY()*height, width, height);
		g.setColor(Color.black);
		g.fillRect(field.getSnake().getHead().getX()*width, field.getSnake().getHead().getY()*height, width, height);
	}
	
}

class MyKeyListener implements KeyListener {

	private int alignment;
	
	MyKeyListener() {
		alignment = 4;
	}
	
	public void reset() {
		alignment = 4;
	}
	
	public int getAlignment() {
		return alignment;
	}
	
	public void keyPressed(KeyEvent e) {
		
		switch ( e.getKeyCode() ) {
		case KeyEvent.VK_UP :
			alignment = 0;
			break;
		case KeyEvent.VK_RIGHT :
			alignment = 1;
			break;
		case KeyEvent.VK_DOWN :
			alignment = 2;
			break;
		case KeyEvent.VK_LEFT :
			alignment = 3;
			break;
		}
	}
	public void keyReleased(KeyEvent e) {
	}
	public void keyTyped(KeyEvent e) {
	}
	
	
}
 
Zuletzt bearbeitet von einem Moderator:

André Uhres

Top Contributor
Oder ist es einfach so, dass man alles neu zeichnen muss ( sprich, erst Hintergrund und dann was man davor haben will ), wenn man keine Fehler haben möchte?
Die paintComponent Methode sollte in der Lage sein, notfalls die ganze Komponente neuzuzeichnen. Komponenten, die komplizierte Darstellungen ausgeben, sollten repaint() mit den Argumenten aufrufen, welche nur den Bereich definieren, der eine Aktualisierung erfordert:
Java:
    public void repaint(int x, int y, int width, int height)
Diese Argumente dienen dazu, das "clip"-Rechteck zu definieren, das im Graphics Objekt der paintComponent Methode den Bereich darstellt, der aktualisieren muss (Graphics#getClipBounds). Die paintComponent Methode muss nur das neuzeichnen, was sich mit dem "clip"-Rechteck überschneidet. Siehe auch: Malen in Swing Teil 1: der grundlegende Mechanismus - Byte-Welt Wiki
 
Zuletzt bearbeitet:

Valkyrion

Mitglied
Das Thema ist zwar schon etwas älter, aber vielleicht interressiert es ja noch Jemanden...
Wenn du verhindern willst, dass der Fensterinhalt komplett gelöscht wird, kannst du einfach die update-Methode in der Klasse Zeichenflaeche überschreiben, sollte bei Snake keine Probleme geben, hats zumindest bei mir nicht.
[Java]//die Methode beinhaltet sonst sowas wie:

//g.setColor(this.getBackground());
//g.fillRect(0, 0, this.getWidth(), this.getHeight());
//this.paint(g);

//das löscht dann den gesamten Bereich
public void update (Graphics g) {

}[/Java]
update ist die Methode, die beim Aufruf von repaint() eigentlich aufgerufen wird, darum kann man so das Löschen der Animation auch leicht verhindern.
Aber Vorsicht: Mindestens bei Win-XP (und vielleicht auch bei anderen Betriebssystemen) führt das dazu, dass das Fenster komplett leer ist und als Hintergrund das hat, was vorher da war!! Also muss der Frame zumindest beim Programmstart bei paint mal ausgemalt werden!
 

Schandro

Top Contributor
solche Spielerein mit dem Swing-paint-Mechanismus sind gefährlich und grundsätzlich nicht empfehlenswert...
 

André Uhres

Top Contributor
Wenn du verhindern willst, dass der Fensterinhalt komplett gelöscht wird, kannst du einfach die update-Methode in der Klasse Zeichenflaeche überschreiben [...] update ist die Methode, die beim Aufruf von repaint() eigentlich aufgerufen wird
Bei AWT ergibt ein Aufruf von repaint() in der Tat zuerst einen Aufruf von update(), der in der Default-Implementierung an paint() weitergeleitet wird. Heavyweight Komponenten können update() überschreiben, um zusätzliches Zeichnen (incremental painting) zu tun, wenn es gewünscht wird (lightweight Komponenten unterstützen nicht das zusätzliche Zeichnen). Für Swing Komponenten wird update() nie aufgerufen. Daher ist es zwecklos, die update-Methode in der Klasse Zeichenflaeche zu überschreiben. Siehe auch Malen in AWT und Swing - Byte-Welt Wiki
 

Valkyrion

Mitglied
Ja du hast recht, ich hab net daran gedacht, dass er Frost ein JPanel benutzt hat :eek: ich hab da noch einen Frame benutzt...
Und zu dem gefährlich: hast recht, aber "Et het noch ever jot jejange!" :D
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G swing Komponenten verrutschen ständig... AWT, Swing, JavaFX & SWT 6
D Swing Komponenten nicht sichtbar nach Start AWT, Swing, JavaFX & SWT 12
H Fehler: Zum Ausführen dieser Anwendung benötigte JavaFX-Runtime-Komponenten fehlen AWT, Swing, JavaFX & SWT 44
H Swing , GridLayout, Größenbestimmung der Komponenten im Layout AWT, Swing, JavaFX & SWT 8
BabySuna Swing Komponenten auslagern auf separate Datei AWT, Swing, JavaFX & SWT 8
B Mit ContentPane werden Komponenten angezeigt, mit SplitPane, JPanel nicht? AWT, Swing, JavaFX & SWT 6
P AWT Einzelne Komponenten zur Laufzeit austauschen? AWT, Swing, JavaFX & SWT 3
D [Swing] Anordnung von Komponenten mit GridLayout Manager AWT, Swing, JavaFX & SWT 13
L Komponenten eines Panels werden erst nach Klick darauf angezeigt AWT, Swing, JavaFX & SWT 13
E Komponenten von JScrollPane werden nicht richtig ermittelt AWT, Swing, JavaFX & SWT 2
F Gebundene Eigenschaften bei Komponenten mit NetBeans verarbeiten AWT, Swing, JavaFX & SWT 3
H LayoutManager Probleme mit Positionierung/Abständen der Komponenten AWT, Swing, JavaFX & SWT 14
dereki2000 Swing JFrame nah hinzufügen von Komponenten akualisieren. AWT, Swing, JavaFX & SWT 2
L Swing Komponenten erst nach Resize sichtbar AWT, Swing, JavaFX & SWT 2
S Swing Panel übernimmt komponenten von anderem AWT, Swing, JavaFX & SWT 7
T Reihenfolge der Komponenten im einem JFrame AWT, Swing, JavaFX & SWT 8
P Gleichmäßige Anodnung von Komponenten im migLayout AWT, Swing, JavaFX & SWT 2
DaCrazyJavaExpert Swing Komponenten genauer anordnen. AWT, Swing, JavaFX & SWT 13
DaCrazyJavaExpert Swing Komponenten in GridBagLayout werden Falsch angeordnet AWT, Swing, JavaFX & SWT 1
P Größe und Ausrichtung von Komponenten festlegen AWT, Swing, JavaFX & SWT 13
MaxG. Swing Swing Komponenten zur Laufzeit hinzufügen AWT, Swing, JavaFX & SWT 2
D Swing Komponenten Anordnung eines Panels in Verbindung eines weiteren Panels AWT, Swing, JavaFX & SWT 9
N Swing Wie Programm strukturieren? (Dynamisch Komponenten hinzufügen) AWT, Swing, JavaFX & SWT 1
Neumi5694 LookAndFeel Look & Feel nicht angezeigter Komponenten ändern AWT, Swing, JavaFX & SWT 6
D JavaFX GUI Komponenten werden langsam bei größerer Datenmenge AWT, Swing, JavaFX & SWT 6
R Komponenten von JPanel bleiben unsichtbar AWT, Swing, JavaFX & SWT 2
D JavaFX Welche Komponenten vermisst ihr? Welche wären essenziell notwendig? AWT, Swing, JavaFX & SWT 8
M Datei mit Komponenten einbinden AWT, Swing, JavaFX & SWT 7
T SWT Externer zugrif auf SWT Komponenten AWT, Swing, JavaFX & SWT 3
Shams Probleme bei dem Hinzufügen von Komponenten zu einem JFrame AWT, Swing, JavaFX & SWT 3
J MouseOver bei Komponenten AWT, Swing, JavaFX & SWT 9
S Größe der Komponenten, beim ändern der größe des Frames, mit ändern! AWT, Swing, JavaFX & SWT 2
D LayoutManager GUI skalieren und deren Komponenten mit Grid(Bag)Layout-Manager. AWT, Swing, JavaFX & SWT 5
G Komponenten vergrößern sich nicht trotz Layoutmanager AWT, Swing, JavaFX & SWT 24
M JavaFX Scenebuilder eigene Komponenten AWT, Swing, JavaFX & SWT 8
A Swing per JComboBox gewünschtes Attribut auswählen und Komponenten passen sich an AWT, Swing, JavaFX & SWT 7
A JavaFX Eigene Komponenten im Scene Builder AWT, Swing, JavaFX & SWT 0
Q Swing Fenster updaten - Hinzugefügte Komponenten darstellen AWT, Swing, JavaFX & SWT 3
S BoxLayout: Anordnung der Komponenten links statt zentriert AWT, Swing, JavaFX & SWT 0
Bartertown JTable - Verschiedene Komponenten in einer Spalte unterbringen AWT, Swing, JavaFX & SWT 3
U Frame zeigt keine Komponenten AWT, Swing, JavaFX & SWT 7
G Applet Applet Komponenten flackern AWT, Swing, JavaFX & SWT 10
K LayoutManager Probleme mit 2 Komponenten AWT, Swing, JavaFX & SWT 9
M Komponenten übereinander AWT, Swing, JavaFX & SWT 7
R Komponenten werden erst nach maximierung des Frames sichtbar (Linux) AWT, Swing, JavaFX & SWT 5
H Swing Getter für GUI-Komponenten AWT, Swing, JavaFX & SWT 3
B Komponenten in Fenster verdrängen sich untereinander AWT, Swing, JavaFX & SWT 6
N Komponenten übereinander AWT, Swing, JavaFX & SWT 3
S Anordnung von GUI-Komponenten mit LayouManger (Problem beim anzeigen von JTextField) AWT, Swing, JavaFX & SWT 5
M Swing Komponenten enablen? AWT, Swing, JavaFX & SWT 4
X Java Komponenten jeder Zeit hinzufügen können AWT, Swing, JavaFX & SWT 3
S View-Komponenten im Controller bekannt machen AWT, Swing, JavaFX & SWT 7
D Grafische Komponenten komplett neu aufbauen (Neukonstruktion) AWT, Swing, JavaFX & SWT 5
A AWT Komponenten in JavaFX einbetten AWT, Swing, JavaFX & SWT 9
M Swing Komponenten erscheinen beim darüberfahren? AWT, Swing, JavaFX & SWT 7
H Komponenten unmittelbar nach dem Ausführen teilweise unsichtbar AWT, Swing, JavaFX & SWT 3
K GUI in Komponenten aufteilen (MVC) AWT, Swing, JavaFX & SWT 2
W Funktionen, sowie aufruf einiger Komponenten AWT, Swing, JavaFX & SWT 4
J Alle Komponenten eines JFrames durchlaufen AWT, Swing, JavaFX & SWT 2
R Swing Komponenten bleiben bei Animation unsichtbar AWT, Swing, JavaFX & SWT 7
T Unter JPanel liegende Komponenten "totschalten" AWT, Swing, JavaFX & SWT 5
morphesus Swing Komponenten werden nicht angezeigt AWT, Swing, JavaFX & SWT 8
C Swing Reihenfolge der Initialisierung von Komponenten AWT, Swing, JavaFX & SWT 6
Asamandra LayoutManager GridBagLayout - Komponenten (mit fill?) vergrößern aber Proportionen dabei erhalten? AWT, Swing, JavaFX & SWT 3
B Swing Komponenten auf JApplet setSize AWT, Swing, JavaFX & SWT 7
B Swing Komponenten auf JApplet setSize AWT, Swing, JavaFX & SWT 2
W Bildgröße automatisch an Komponenten anpassen AWT, Swing, JavaFX & SWT 3
TheWhiteShadow Swing Komponenten organisieren AWT, Swing, JavaFX & SWT 9
S Überlappung zweier Komponenten AWT, Swing, JavaFX & SWT 12
Z größe der komponenten bestimmen AWT, Swing, JavaFX & SWT 16
C GUI-Komponenten skalieren AWT, Swing, JavaFX & SWT 10
M Seltsames Problem mit Resize eines Fensters und seiner Komponenten AWT, Swing, JavaFX & SWT 2
D Swing Komponenten verstecken AWT, Swing, JavaFX & SWT 4
X Swing Resizing der Komponenten innheralb eines Panels AWT, Swing, JavaFX & SWT 2
T Swing Font für alle Komponenten ändern AWT, Swing, JavaFX & SWT 2
S Problem mit Swing Komponenten AWT, Swing, JavaFX & SWT 11
A Swing Alle Komponenten auf JFrame ermitteln AWT, Swing, JavaFX & SWT 4
E LookAndFeel Eigene Komponenten mit Synth L&F stylen AWT, Swing, JavaFX & SWT 2
S Swing Frame und Klasse extends JPanel - Komponenten zur Laufzeit austauschen AWT, Swing, JavaFX & SWT 18
S JButton und textfield.setText - Komponenten über-/verdecken sich AWT, Swing, JavaFX & SWT 15
M Komponenten übereinander prüfen AWT, Swing, JavaFX & SWT 3
W LayoutManager GridBag richtig nutzen - Komponenten richtig anordnen und automatisch vergrößern AWT, Swing, JavaFX & SWT 5
M Komponenten in anderer Reihenfolge anzeigen AWT, Swing, JavaFX & SWT 4
D Mit GridBayLayout Komponenten anordnen AWT, Swing, JavaFX & SWT 6
N Window transparent, Komponenten nicht transparent AWT, Swing, JavaFX & SWT 11
R Farbänderung von Komponenten wird nicht wirksam AWT, Swing, JavaFX & SWT 7
P Swing Hierachie oder Reihenfolge von Komponenten AWT, Swing, JavaFX & SWT 5
T Sich überlappende Komponenten AWT, Swing, JavaFX & SWT 2
D Swing Probleme beim Anzeigen der einzelnen Komponenten AWT, Swing, JavaFX & SWT 16
R Swing Komponenten klein angezeigt AWT, Swing, JavaFX & SWT 10
D Swing Swing Komponenten verschieben AWT, Swing, JavaFX & SWT 7
B Komponenten nach Skalierung nicht mehr ansprechbar AWT, Swing, JavaFX & SWT 9
Kr0e AWT Komponenten in JPanel AWT, Swing, JavaFX & SWT 6
JuliaOne Komponenten innerhalb eine JScrollpane werden auch ausserhalb davon gezeichnet! AWT, Swing, JavaFX & SWT 7
xehpuk Swing Komponenten werden durch setFont() winzig AWT, Swing, JavaFX & SWT 3
O Größe von Komponenten im JFrame manuell verändern AWT, Swing, JavaFX & SWT 2
H Komponenten anwendugsweit formatieren AWT, Swing, JavaFX & SWT 6
M Swing Komponenten mit fester Größe an Fensterrand(JFrame) AWT, Swing, JavaFX & SWT 2
A Komponenten zur Laufzeit entfernen AWT, Swing, JavaFX & SWT 3
Weiti Swing Animationen - Drehung aller Komponenten auf Knopfdruck AWT, Swing, JavaFX & SWT 12

Ähnliche Java Themen

Neue Themen


Oben