AWT Tic Tac Toe oberfläche

Status
Nicht offen für weitere Antworten.

Jenny87

Mitglied
Hallo ihr Lieben,
ich studiere BWL im 3.Semester und soll nun ein Tic Tac Toe Spiel programmieren, bei dem 4 aufeinanderfolgende felder gewinnen (so ähnlich wie 4 gewinnt, nur dass die scheiben nicht runterfliegen können). Das spielfeld soll aus 15x15 Feldern bestehen. Kann mir vielleicht jemand sagen wie ich da am besten vorgehen muss? Würd mich sehr freuen weil ich hier grad voll am verzweifeln bin.
viele liebe Grüße Jenn
 

ARadauer

Top Contributor
schon mal was mit zweidimensionalen arrays gemacht?
ein array mit arrays drinnen, da könntest du ansetzen....
 

Schandro

Top Contributor
Ein Beispiel:

ne Klasse "Feld" die von JButton erbt und zusätzlich den Zustand des Felds speichert (leer/spieler1/spieler2). Das lässt sich gut mit nem enum realisieren. Außerdem passt es seine Oberfläche beim ändern des Zustandes selbständig an, Beispiel für die setZustand Methode ("Zustand" ist ein enum):

Java:
public void setZustand(Zustand zustand){
	this.zustand = zustand;
	
	switch(zustand){
		case LEER:
			this.setText("");
			break;
		case SPIELER1:
			this.setText("1");
			break;
		case SPIELER2:
			this.setText("2");
			break;
	}
}
das "setText" ist nur ein Beispiel, stattdessen könntest du z.b. auch das Icon ändern.


In der Hauptklasse erstellst du jetzt ein 2Dimensionales Array von diesen "Feld"ern, initialisierts sie, lässt sie per einfachem GridLayout automatisch anordnen und hängst an jedes einzelne einen ActionListener dran, der kontrolliert ob das angeklickte Feld leer ist und wenn ja denn Zustand des Feldes auf den Spieler setzt, der grade dran ist. Dann läuft en Algorithmus durch der guckt ob jemand gewonnen hat, wenn nicht ist der nächste Spieler dran.

Natürlich ist die Lösung, ein Spielfeld aus vielen JButtons zusammenzusetzen nur für einfache Programme geeignet. Es spart aber am Anfang einiges an Arbeit
 

Jenny87

Mitglied
Vielen dank an euch beide für die schnelle Hilfe ;-)
Kann mir vielleicht noch jemand sagen wie des mit diesen Arrays genau funktioniert, ein kleines Beispiel oder so?
Liebe Grüße
Jenn
 

heart_disease

Bekanntes Mitglied
Ein zweidimensionales Array kannst du dir vorstellen wie eine Tabelle. Ein Array ist eine Kette von Werten (vorstellbar als Tabellenzeile). Jedes Feld des Arrays stellt also eine Spalte dar.

Dieser Code erstellt eine 2D-Matrix die 3x3 Felder des Typs int (Integer = Ganzzahl) beinhaltet. Alle Felder haben in diesem Fall den Wert 0.
Java:
int[][] matrix = new int[][]{
	{ 0, 0, 0 },
	{ 0, 0, 0 },
	{ 0, 0, 0 }
};

Den 2. Wert der 2. "Zeile" kriegst du dann zB über matrix[1][1]. Ein zweidimensionales Array ist quasi ein Array von Arrays.
 
Zuletzt bearbeitet:

Jenny87

Mitglied
muss es denn unbedingt ein zweidimensionales array sein?
ich habe da nämlich ein fertiges tic tac toe (insegsamt 9 felder) auf ein 15x15 felder (insgesamt 225) erweitert. Jetzt ist mein problem, dass der Computer wegen der falschen logik keinen gewinner (außer in den ersten 9 feldern) ermittelt. Ich bin am verzweifeln :-(
 
Zuletzt bearbeitet:

Landei

Top Contributor
Na ja, der Originalcode hat alle 9 Felder "hintereinander" statt zweidimensional gemacht. So einfach läßt sich aber bei der Vergrößerung auf 15 Felder die Logik nicht mehr anwenden: Du brauchst ja sicher keine 15 X in einer Zeile, um zu gewinnen (üblich wären 4 oder 5). Mein Rat: Behalte den Code, aber ersetze das eindimensionale durch ein zweidimensionales Array, alles andere bringt dir nur Ärger ein. Insbesondere wird dann deine Anwendung extrem unflexibel (falls du z.B. nochmal die Größe ändern willst) Die Datenstrukturen sollen dem Problem entsprechen und es sollte nicht versucht werden, das Problem an die Datenstrukturen anzupassen. Wenn du bei den einzelnen "Übersetzungs"-Schritten Schwierigkeiten hast, helfen wir gerne weiter.
 

Jenny87

Mitglied
Ich habe jetzt einen neuen code, bei dem ich das Spielfeld auch schon auf 15*15 erweitert habe. Nun weis ich aber nicht, wie ich die Logik verändern muss, damit der Computer erkennt wann das Spiel vorbei ist. Das Spiel soll beendet werden, wenn ein Spieler 4 aufeinanderfolgende Felder horizontal, senkrecht oder diagonal besetzt hat.
Hat Jemand ne Idee?
Java:
package main;

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

/**
 * Grafisches Interface. 
*/
public class Bingo extends JFrame {
	private static final long serialVersionUID = 1L;
	
	public static final int ARTIFICIAL_INTELLIGENCE = 0;
	public static final int MULTIPLAYER = 1;
	
	private int mode;
	private BingoCore core;
	private JButton[][] buttons;

	public static void main( String[] args ) {
		try {
			UIManager.setLookAndFeel( UIManager.getSystemLookAndFeelClassName() );
		} catch ( Exception e ) {
			e.printStackTrace();
		}
		
		Bingo game = new Bingo( Bingo.ARTIFICIAL_INTELLIGENCE );
		game.init( 20, 20 );
	}
	
	public Bingo( int mode ) {
		this.core = new BingoCore();
		this.buttons = new JButton[15][15];
		this.mode = mode;
	}
	
	public void init( int top, int left ) {
		this.setTitle( "Vier Gewinnt" );
		this.setLayout( new GridLayout(15, 15) );
		this.setDefaultCloseOperation( WindowConstants.EXIT_ON_CLOSE );
		this.setBounds( top, left, 650, 630 );

		for(int yy=0;yy<=14;yy++){
			for(int xx=0;xx<=14;xx++){
				this.buttons[xx][yy] = new JButton();
				this.buttons[xx][yy].addActionListener( new BingoListener(xx, yy) );
				this.getContentPane().add( this.buttons[xx][yy] );
			}
		}
		
		this.setVisible( true );
	}
	
	private void setTip( int row, int col ) {
		core.setTip( row, col );
		this.buttons[row][col].setText( "X" );
		this.buttons[row][col].setEnabled( false );
		
		this.checkWin( core.checkWin() );
		
		System.out.println( row + " : " + col );
		System.out.println(buttons[row][col]);
	}
	
	private void checkWin( int win ) {		
		if ( this.mode == ARTIFICIAL_INTELLIGENCE && win == 0 ) {
			Point p = core.enemyTake();
			this.buttons[p.x][p.y].setText("O");
			this.buttons[p.x][p.y].setEnabled( false );
			
			win = core.checkWin();
			if ( win != 0 ) {
				this.checkWin( win );
			}
		} else if ( win == -1 ) {
			JOptionPane.showMessageDialog(
				null,
				"Unentschieden!",
				"Ende des Spiels",
				JOptionPane.INFORMATION_MESSAGE
			);
			this.disableAll();
		} else {
			JOptionPane.showMessageDialog(
				null,
				"Spieler " + win + " hat gewonnen!",
				"Ende des Spiels",
				JOptionPane.INFORMATION_MESSAGE
			);
			this.disableAll();
		}
	}
	
	private void disableAll() {
		for ( int i=0; i<this.buttons.length; i++ ) {
			for ( int i2=0; i2<this.buttons[i].length; i2++ ) {
				if ( this.buttons[i][i2].isEnabled() ) {
					this.buttons[i][i2].setEnabled( false );
				}
			}
		}
	}
	
	private class BingoListener implements ActionListener {
		private int col;
		private int row;
		
		public BingoListener( int col, int row ) {
			this.col = col;
			this.row = row;
		}

		public void actionPerformed( ActionEvent e ) {
			setTip( this.col, this.row );
		}
	}
}


Hier muss doch in der Methode checkWin ein anderer Algorythmus rein? Wie könnte der aussehen?
Java:
package main;

import java.awt.Point;

/*
 * Logikklasse.
*/
public class BingoCore {
	/** Anzahl der durchgefuehrten Spielzuege */
	private int steps = 0;
	private int[][] field;
	
	public BingoCore() {
		this.field = new int[][]{
			{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
			{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
			{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
			{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
			{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
			{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
			{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
			{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
			{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
			{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
			{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
			{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
			{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
			{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
			{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
		};
	}
	
	public int checkWin() {
		//Auswertung der felder
		// 1. Reihe Horizontal

		if ( this.field[0][0] != 0 && this.field[0][0] == this.field[0][1] && this.field[0][1] == this.field[0][2] )
			return this.field[0][0];
		
		// 1. Reihe Vertikal
		if ( this.field[0][0] != 0 && this.field[0][0] == this.field[1][0] && this.field[1][0] == this.field[2][0] )
			return this.field[0][0];
		// 2. Reihe Vertikal
		else if ( this.field[0][1] != 0 && this.field[0][1] == this.field[1][1] && this.field[1][1] == this.field[2][1] )
			return this.field[0][1];
		// 3. Reihe Vertikal
		else if ( this.field[0][2] != 0 && this.field[0][2] == this.field[1][2] && this.field[1][2] == this.field[2][2] )
			return this.field[0][2];
		// Diagonale Links
		else if ( this.field[0][0] != 0 && this.field[0][0] == this.field[1][1] && this.field[1][1] == this.field[2][2] )
			return this.field[0][0];
		// Diagonale Rechts
		else if ( this.field[0][2] != 0 && this.field[0][2] == this.field[1][1] && this.field[1][1] == this.field[2][0] )
			return this.field[0][0];
		// Unentschieden
		else if ( this.steps == 225 )
			return -1;
		
		return 0;
	}
	
	public void setTip( int col, int row ) {
		if ( this.field[row][col] == 0 ) {
			this.field[row][col] = 1;
			this.steps++;
		} else {
			System.err.println( "Spielstein konnte nicht gesetzt werden! [" + row + ":" + col + "]" );
		}
	}
	
	public Point enemyTake() {
		int r=(int)(Math.random()*15);
		for ( int i=r; i<this.field.length; i++ ) {
			for ( int i2=0; i2<this.field[i].length; i2++ ) {
				if ( this.field[i][i2] == 0 ) {
					this.field[i][i2] = 2;
					this.steps++;
					return new Point( i2, i );
				}
			}
		}
		
		return null;
	}
}
 

banshee

Bekanntes Mitglied
Falls man immernoch mit 3 Steinen in einer Reihe/Spalte/Diagonale gewinnt, dann ist es doch ganz einfach. Du läufts jede Spalte/Reihe/Diagonale mit Schleifen durch und zählst hintereinander liegende Steine. Wenn das irgendwo mehr als 3 sind, gibts einen Sieger :)
 

Jenny87

Mitglied
Es sollen 4 Steine zum Sieg führen. WIe sieht denn so eine Schleife aus? kannst mir mal ein Beispiel geben?
Liebe Grüße
 

banshee

Bekanntes Mitglied
Zähler = 0
Farbe = 0
Durchlaufe jedes Feld einer Zeile
..Falls Feldfarbe != 0
....Falls Feldfarbe == Farbe
....Zähler++
....Falls Zähler >= 4
.......return Farbe
....Sonst
......Zähler = 0
......Farbe = Feldfarbe
..Sonst
....Zähler = 0
....Farbe = 0

Schleifen gehören übrigens zu den Grundlagen und man findet massig Material im Netz.
 

Jenny87

Mitglied
Also das mit den Schleifen hab ich jetzt gemeistert! *Stolz* Jetzt kommt aber das nächste Problem: Der Computergegner. Ich hab zwar ein bisschen rumprobiert, aber irgendwie setzt er seine Steine nicht immer. Kann mir jemand sagen wo bei public Point enemyTake() der Fehler ist? Wär echt supiii

Java:
public int checkWin() {
		int rueck=0; //Variable fuer den Ruckgabewert
		
        //Auswertung der felder:
        // prueft Horizontal auf dem ganzen Feld
        for(int p=0;p<12;p++){
             for(int i=0;i<15;i++){
                if(this.field[i][p]!=0 && this.field[i][p]==this.field[i][p+1] && this.field[i][p+1] == this.field[i][p+2] && this.field[i][p+2]==this.field[i][p+3]){
                    rueck=this.field[i][p];
                    i=15;
                }
            }
        }
        //prueft Vertikal auf dem ganzen Feld
        for(int p=0;p<12;p++){
            for(int i=0;i<15;i++){
                if(this.field[p][i]!=0 && this.field[p][i]==this.field [p+1][i] && this.field[p+1][i] == this.field[p+2][i] && this.field[p+2][i]==this.field[p+3][i]){
                    rueck=this.field[p][i];
                    i=15;
                }
            }
        }
         //prueft Diagonale Links
        for(int p=0;p<12;p++){
            for(int i=0;i<12;i++){
                if (this.field[i][p] != 0 && this.field[i][p] == this.field[i+1][p+1] && this.field[i+1][p+1] == this.field[i+2][p+2] && this.field[i+2][p+2] == this.field[i+3][p+3]){
                    rueck=this.field[i][p];
                    i=12;
                }
            }
        }
        //prueft Diagonale Rechts
        for(int p=0;p<12;p++){
            for(int i=0;i<12;i++){
                if (this.field[i][p+3] != 0 && this.field[i][p+3] == this.field[i+1][p+2] && this.field[i+1][p+2] == this.field[i+2][p+1] && this.field[i+2][p+1] == this.field[i+3][p]){
                    rueck=this.field[i][p+3];
                    i=12;
                }
            }
        }
		// Unentschieden
        if ( this.steps == 225 ){
			rueck=-1;
        }

        return rueck;
	}

	public void setTip( int col, int row ) {
		if ( this.field[row][col] == 0 ) {
			this.field[row][col] = 1;
			this.steps++;
		} else {
			System.err.println( "Spielstein konnte nicht gesetzt werden! [" + row + ":" + col + "]" );
		}

	}

	public Point enemyTake() {
	//Computergegner
	
				
	//Horizontal 2Steine
        for(int p=0;p<12;p++){
            for(int i=0;i<15;i++){
               if(this.field[i][p]!=0 && this.field[i][p]==this.field[i][p+1] &&  this.field[i][p+2]==0){
            	   this.field[i][p+2] = 2;
						this.steps++;
						return new Point( p+2, i );
					}
				}
			}
		
	//Horizontal 3Steine

        for(int p=0;p<12;p++){
            for(int i=0;i<15;i++){
               if(this.field[i][p]!=0 && this.field[i][p]==this.field[i][p+1] && this.field[i][p+1] == this.field[i][p+2]&&this.field[i][p+3]==0){
            	   this.field[i][p+3] = 2;
						this.steps++;
						return new Point( p+3, i );
					}
				}
			}
        
        //Vertikal 2Steine
        for(int p=0;p<15;p++){
            for(int i=0;i<15;i++){
                if(this.field[p][i]!=0 && this.field[p][i]==this.field [p+1][i] && this.field[p][i+2]==0){
                	this.field[i][p+2] = 2;
					this.steps++;
					return new Point( i, p+2 );
                }
            }
        }      
        
        //Vertikal 3Steine
        for(int p=0;p<15;p++){
            for(int i=0;i<15;i++){
                if(this.field[p][i]!=0 && this.field[p][i]==this.field [p+1][i] && this.field[p+1][i] == this.field[p+2][i] && this.field[p][i+3]==0){
                	this.field[i][p+3] = 2;
					this.steps++;
					return new Point( i, p+3 );
                }
            }
        }
        //Diagonale Links 2 Steine
        for(int p=0;p<15;p++){
            for(int i=0;i<15;i++){
                if (this.field[i][p] != 0 && this.field[i][p] == this.field[i+1][p+1] &&  this.field[i+2][p+2] ==0){
                	this.field[p+2][i+2]= 2;
					this.steps++;
					return new Point( p+2, i+2 );
                }
            }
        }        
        //Diagonale Links 3Steine
        for(int p=0;p<15;p++){
            for(int i=0;i<15;i++){
                if (this.field[i][p] != 0 && this.field[i][p] == this.field[i+1][p+1] && this.field[i+1][p+1] == this.field[i+2][p+2] && this.field[i+3][p+3] ==0){
                	this.field[p+3][i+3]= 2;
					this.steps++;
					return new Point( p+3, i+3 );
                }
            }
        }
        //Diagonale Rechts 2 Steine
        for(int p=0;p<15;p++){
            for(int i=0;i<15;i++){
                if (this.field[i][p+3] != 0 && this.field[i][p+3] == this.field[i+1][p+2] &&  this.field[i+2][p+1] == 0){
                	this.field[p+1][i+2]=2;
         			this.steps++;
        			return new Point(p+1,i+2);
                }
            }
        }
        //Diagonale Rechts 3Steine
        for(int p=0;p<15;p++){
            for(int i=0;i<15;i++){
                if (this.field[i][p+3] != 0 && this.field[i][p+3] == this.field[i+1][p+2] && this.field[i+1][p+2] == this.field[i+2][p+1] && this.field[i+3][p] == 0){
                	this.field[p][i+3]=2;
        			this.steps++;
        			return new Point(p,i+3);
                }
            }
        }
        
        
        //zufall
        for(int p=(int)(Math.random()*15);p<this.field.length;p++){
        	for(int i=(int)(Math.random()*15);i<this.field.length;i++){
        		if(this.field[p][i]==0){
        			this.field[p][i]=2;
        			this.steps++;
        			return new Point(i,p);
        		}
        	}
        }
		
		return null;
	}
 

Marco13

Top Contributor
Er sollte doch immer einen Point zurückgeben, oder? Setzt er manchmal vielleicht auf ein Feld, wo schon einer seiner Steine liegt?
 

Jenny87

Mitglied
Kommt manchmal vor. Und auch nach dem ersten zug (von mir) setzt der computer keinen stein sondern gibt eine fehlermeldung aus...
 

Marco13

Top Contributor
Ich denk' garnicht dran, dir das zu sagen :pueh:

Du hast ja auch nicht gesagt, welche Fehlermeldung er ausgibt :bae:

( :joke: )
 

Jenny87

Mitglied
Hast ja auch nich danach gefragt:)
Aber ich zeig sie dir trotzdem;)
Code:
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 15
	at main.VierGewinntCore.enemyTake(VierGewinntCore.java:178)
	at main.VierGewinnt.checkWin(VierGewinnt.java:79)
	at main.VierGewinnt.setTip(VierGewinnt.java:72)
	at main.VierGewinnt.access$0(VierGewinnt.java:67)
	at main.VierGewinnt$VierGewinntListener.actionPerformed(VierGewinnt.java:136)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
 

Marco13

Top Contributor
Also - in VierGewinntCore.java, Zeile 178, greifst du auf einen zu großen Array-Index zu. Es kann also sein, dass meine Scherz-Antwort fast richtig war - dass dort irgendwo p+2 steht, wo aber nur p+1 stehen dürfte, oder dass eine der Grenzen bei einer for-Schleife z.B. 14 ist aber nur 13 sein dürfte. Kannst mal direkt vor diese Zeile sowas machen wie
Code:
System.out.println("Jetzt greife ich auf index "+index+" von 'array' zu, der "+array.length+" lang ist");
if (... array[index] ...)...
und dann mal laufen lassen, und versuchen, nachzuvollziehen, WARUM er an dieser Stelle auf den falschen index zugreift.
 

Jenny87

Mitglied
So mein Code ist jetzt dank eurer Hilfe fertig! Nun noch eine letzte Frage:
Gibt es ein Tool, welches mir aus dem Code ein Struktogramm oder ein Flussdiagramm erstellt? Weis da eventuell jemand was?
Viele Grüße
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Wie kann ich zwei Grafiken in einer Oberfläche anzeigen lassen? AWT, Swing, JavaFX & SWT 8
D Objekte einer Oberfläche in eine Datei/Ordner speichern AWT, Swing, JavaFX & SWT 9
A Oberfläche mit zwei Klassen und actionlistener verbinden AWT, Swing, JavaFX & SWT 7
S Swing Oberfläche rekusiv updaten mit updateUi() AWT, Swing, JavaFX & SWT 10
M LookAndFeel Oberfläche wie Eclipse/Business Objects oder Solvatio AWT, Swing, JavaFX & SWT 2
K Initialisierung von Oberfläche Richtig? AWT, Swing, JavaFX & SWT 5
T Java Swing Oberfläche aktualisiert sich nicht AWT, Swing, JavaFX & SWT 2
K Eclipse-Java Export/Import mit Oberfläche AWT, Swing, JavaFX & SWT 2
D Swing JComponent zeichnen ohne sie zur Oberfläche hinzuzufügen AWT, Swing, JavaFX & SWT 2
J prinzipielles verständnis für Oberfläche/Code-trennung AWT, Swing, JavaFX & SWT 5
T wieso leere Oberfläche? AWT, Swing, JavaFX & SWT 5
S Flickr Bilder in Gui Oberfläche AWT, Swing, JavaFX & SWT 21
cedi Swing Problem mit Grafischer Oberfläche AWT, Swing, JavaFX & SWT 8
E Swing Grafische Oberfläche zur Ordnerauswahl AWT, Swing, JavaFX & SWT 6
Z Component für File-Browser ähnliche Oberfläche AWT, Swing, JavaFX & SWT 6
B Wegfindung - Oberfläche AWT, Swing, JavaFX & SWT 3
P Erste Versuche einer Grafischen Oberfläche AWT, Swing, JavaFX & SWT 8
S AWT Oberfläche integriert sich nicht in GTK-Theme AWT, Swing, JavaFX & SWT 5
Private Void Swing "Vier Gewinnt"-Oberfläche AWT, Swing, JavaFX & SWT 7
L Eigene Design Oberfläche erstellen AWT, Swing, JavaFX & SWT 3
D Mehrere Biler auf einer Oberfläche AWT, Swing, JavaFX & SWT 6
G Swing skalierbare Oberfläche AWT, Swing, JavaFX & SWT 2
W Oberfläche wird nicht koreckt gezeichnet AWT, Swing, JavaFX & SWT 5
dl85hej meine erste Oberfläche AWT, Swing, JavaFX & SWT 3
multiholle Oberfläche MP3-Player AWT, Swing, JavaFX & SWT 2
A Oberfläche wir mit html-Frames aufbauen AWT, Swing, JavaFX & SWT 11
C Swing-Oberfläche wird auf einiges PCs nicht korrekt dargeste AWT, Swing, JavaFX & SWT 19
H JAVA Fenster Oberfläche AWT, Swing, JavaFX & SWT 3
L wie kann ich diese Oberfläche bauen ohne das gestreckt wird? AWT, Swing, JavaFX & SWT 18
S In JavaSwing Mailversand mit Oberfläche AWT, Swing, JavaFX & SWT 2
F Wie Oberfläche verbessern? (JButtons, Textfeld verkleinern) AWT, Swing, JavaFX & SWT 5
M Aus Swing Oberfläche Bild erzeugen AWT, Swing, JavaFX & SWT 39
F Zugriff auf Oberfläche bzw Trennung GUI / Logik AWT, Swing, JavaFX & SWT 3
T Problem mit Oberfläche und Thread AWT, Swing, JavaFX & SWT 10
G Ansprechende Java Oberfläche entwickeln AWT, Swing, JavaFX & SWT 10
B Probleme mit Öffnen einer GUI Oberfläche AWT, Swing, JavaFX & SWT 2
I Swing-Oberfläche wird nicht korrekt gezeichnet AWT, Swing, JavaFX & SWT 6
G Oberfläche löschen und neue erstellen AWT, Swing, JavaFX & SWT 4
R RAD Oberfläche für Eclipse gesucht AWT, Swing, JavaFX & SWT 4
G Tooltips auf grafischer Oberfläche AWT, Swing, JavaFX & SWT 2
A Background Image auf SWT Oberfläche legen AWT, Swing, JavaFX & SWT 3
J Anordung der Objekte in der Oberfläche? AWT, Swing, JavaFX & SWT 3
B Oberfläche mit SWT AWT, Swing, JavaFX & SWT 5
S Berechtigungssystem für Swing-Oberfläche AWT, Swing, JavaFX & SWT 2
M Grafische Objekte beliebig auf einer Oberfläche verschieben AWT, Swing, JavaFX & SWT 3
T Eigene grafische Oberfläche AWT, Swing, JavaFX & SWT 7
G JTree in Oberfläche Integrieren?? AWT, Swing, JavaFX & SWT 6
D Trennung von Programm und Oberfläche AWT, Swing, JavaFX & SWT 3
M Java Oberfläche per Drag&Drop -- Wie bei Visual Basic ! AWT, Swing, JavaFX & SWT 5
F Oberfläche wird nicht gestartet! AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen


Oben