Array grafisch darstellen

McKay

Mitglied
Hallo Forums-mitglieder,

ich bin neu hier, ich benötige hilfe habe gerade googel glühen lassen und einige sachen ausprobiert bin aber zu keinem vernünftigen ergebnis gekommen.
Ich möchte das Game of Life programmieren, habe es auch soweit, dass alles richtig gezählt wird und habe nun ein 2D-Array mit 1en (lebende Zelle) und 0en (tote Zelle)
das sieht natürlich nicht schick aus.
Nun möcht ich das in bunten quadraten auf ein Panel bringen. kann mir bitte jemand erklären wie ich das am geschicktesten anstelle?

Danke McKay
 

Network

Top Contributor
Vieleicht sowas?

Java:
for( int i = 0; i < array.lenght; i++ ) {
     for( int j = 0; j < array[0].length; j++ ) {
          if( array[i][j] == 0 ) g.setColor( Color.white );
          else g.setColor( Color.black );
          g.drawRect( 10*i, 10*j, 10, 10 );
     }
}

Gruß
Net
 

McKay

Mitglied
ja so in der Art hatte ich mir das auch schon mal gedacht aber da wusste ich nicht wie ich dieser Klasse dann das Array übergeben.
Das sieht doch dann so aus oder?

Java:
public void paintComponent( Graphics g ){    
    	  for( int i = 0; i < s.length; i++ ) {
    		     for( int j = 0; j < s[0].length; j++ ) {
    		          if( s[i][j] == 0 ) g.setColor( Color.white );
    		          else g.setColor( Color.black );
    		          g.drawRect( 10*i, 10*j, 10, 10 );
    		     }
    		}
     }
 
V

vanny

Gast
Da gibt es mehrere Möglichkeiten.
Einmal wie Network es schon partiell dargelegt hat (einfach selbst zeichnen) oder du benutzt einfach JPanel und ein GridLayout und färbst dann einfach den Background.

Um die Logik kommst natürlich nicht herum.

Gruß
Vanny
 

McKay

Mitglied
Also das über ein JPanel zu machen war auch ein Gedanke und das GridLayout habe ich mir eben angeschaut aber irgenwie nutzen das alle nur als gitte für Buttons. Wie bekomme ich da ein einfaches buntes Feld entsprechend meines Array hin?
 
Zuletzt bearbeitet:

McKay

Mitglied
ProblemLösung gefunden...

Java:
        for (int i=0; i<l; i++){
        	panel[i] = new JPanel[h+1];
			for (int j=0; j<h; j++){
				panel[i][j] = new JPanel();
				if (s[i][j] == 1){
					panel[i][j].setBackground(Color.green);
				}
				else{
					panel[i][j].setBackground(Color.red);
				}
				// JPanel dem Frame hinzufuegen
				myJFrame.add(panel[i][j]);
			}
		}
 
V

vanny

Gast
Java:
public class GridLayoutMitPaneln extends JPanel{
	
	private int x,y;
	private int[][] werte;
	private JPanel[][] panels;
	
	public GridLayoutMitPaneln(){
		x = 3;
		y = 3;
		
		
		werte = new int[x][y];
			werte[0][0] = 1; werte [0][1] = 0; werte[0][2] = 1;
			werte[1][0] = 0; werte [1][1] = 1; werte[1][2] = 0;
			werte[2][0] = 1; werte [2][1] = 0; werte[2][2] = 1;
		panels = new JPanel[x][y];
		this.setLayout(new GridLayout(x, y));
		
		
		for(int i = 0; i < x; i++){
			for(int j = 0; j < y; j++){
				panels[i][j] = new JPanel();
				this.add(panels[i][j]);
			}
		}
		
		for(int i = 0; i < x; i++){
			for(int j = 0; j < y; j++){
				if(werte[i][j] == 0){
					panels[i][j].setBackground(Color.BLACK);
				}else{
					panels[i][j].setBackground(Color.BLUE);
				}
			}
		}
		
	
	
		
	}
	
	public static void main(String[] args) {
		JFrame frame = new JFrame();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setSize(300, 300);
		frame.setLocationRelativeTo(null);
		
		frame.add(new GridLayoutMitPaneln());
		
		frame.setVisible(true);
	}

}

[EDIT]OK bin zwar zu spät, aber trenn das lieber, sodass du nur die Farbe in einer extra Methode änderst und nich immer neue JPanel erzeugst :p[/EDIT]
 
Zuletzt bearbeitet von einem Moderator:

McKay

Mitglied
stimmt, danke.
aber wie muss ich es ganau trennen? Habe es gerade versucht aber das geht so leider gar nicht. wie wäre es sinnvoll?

Meine Variante:

Java:
public static JFrame zeichnePanel (int[][] s, int l, int h){
		
        // Erzeugung eines neuen Dialoges
        JFrame myJFrame = new JFrame();
        myJFrame.setTitle("Game of Life");
        
        myJFrame.setLayout(new GridLayout(h+1, l+1));    
        
    	 JPanel[][] panel = new JPanel[l+1][h+1]; 
    	 
        for (int i=0; i<l; i++){
        	panel[i] = new JPanel[h+1];
			for (int j=0; j<h; j++){
				panel[i][j] = new JPanel();
				if (s[i][j] == 1){
					panel[i][j].setBackground(Color.green);
				}
				else{
					panel[i][j].setBackground(Color.red);
				}
				// JPanel dem Frame hinzufuegen
				myJFrame.add(panel[i][j]);
			}
		}
		
        // Fenstergröße dem Inhalt anpassen
        myJFrame.pack();
		
        // Frame anzeigen
        myJFrame.setVisible(true);
        return myJFrame;
	}

public static void aktualisierePanel(int[][] s, int l, int h, JFrame myJFrame){
		 JPanel[][] panel = new JPanel[l+1][h+1]; 
    	 
	        for (int i=0; i<l; i++){
	        	panel[i] = new JPanel[h+1];
				for (int j=0; j<h; j++){
					panel[i][j] = new JPanel();
					if (s[i][j] == 1){
						panel[i][j].setBackground(Color.green);
					}
					else{
						panel[i][j].setBackground(Color.red);
					}
					// JPanel dem Frame hinzufuegen
					myJFrame.add(panel[i][j]);
				}
			}
			
	        // Fenstergröße dem Inhalt anpassen
	        myJFrame.pack();
			
	        // Frame anzeigen
	        myJFrame.setVisible(true);
}
 
V

vanny

Gast
Hab mein Beispiel nochmal geändert und die Trennung in Methoden ausgelagert:
Java:
public class GridLayoutMitPaneln extends JPanel{
	
	private int x,y;
	private int[][] werte;
	private JPanel[][] panels;
	
	public GridLayoutMitPaneln(){
		x = 3;
		y = 3;
		
		
		werte = new int[x][y];
			
		
		panels = new JPanel[x][y];
		this.setLayout(new GridLayout(x, y));
		
		//die Panel müssen nur einmal erzeugt werden ^^
		for(int i = 0; i < x; i++){
			for(int j = 0; j < y; j++){
				panels[i][j] = new JPanel();
				this.add(panels[i][j]);
			}
		}
		
                werteAndern();//LogikTeil
		farbenBerechnen();//FarbZuordnung
			
		
	
	
		
	}
	
	//hier werden abschliessend die BackGrounds gesetzt
	private void farbenBerechnen() {
		for(int i = 0; i < x; i++){
			for(int j = 0; j < y; j++){
				if(werte[i][j] == 0){
					panels[i][j].setBackground(Color.BLACK);
				}else{
					panels[i][j].setBackground(Color.BLUE);
				}
			}
		}
	}

	//hier kommt natürlich deine Logik für deinen 0 und 1 Werte rein
	private void werteAndern() {
		werte[0][0] = 1; werte [0][1] = 0; werte[0][2] = 1;
		werte[1][0] = 0; werte [1][1] = 1; werte[1][2] = 0;
		werte[2][0] = 1; werte [2][1] = 0; werte[2][2] = 1;
	}

	public static void main(String[] args) {
		JFrame frame = new JFrame();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setSize(300, 300);
		frame.setLocationRelativeTo(null);
		
		frame.add(new GridLayoutMitPaneln());
		
		frame.setVisible(true);
	}

}

Gruß Vanny

[EDIT]du könntest sogar farbenBerechnen(); als letzten Aufruf in werteAendern(); benutzen, dann wird nach jeder Berechnung die Farbe neu zugeteilt.[/EDIT]
 
Zuletzt bearbeitet von einem Moderator:
Ähnliche Java Themen
  Titel Forum Antworten Datum
izoards JavaFX TableView mit Array Inhalt füllen AWT, Swing, JavaFX & SWT 1
Jose05 NullPointerException bei Beschreiben eines Labels aus einem Array AWT, Swing, JavaFX & SWT 12
L Swing Wert vom Textfield in Array List hinzufügen AWT, Swing, JavaFX & SWT 2
A 2d array AWT, Swing, JavaFX & SWT 1
J Fenster mit Inhalten aus einem Array Füllen AWT, Swing, JavaFX & SWT 4
M Swing Objekt Array in GUI ausgeben AWT, Swing, JavaFX & SWT 1
N Array mit JavaFX Elementen AWT, Swing, JavaFX & SWT 9
H Aus Array Container Panel an Tabbedpane zuweisen AWT, Swing, JavaFX & SWT 29
G Eingabe in JTextField in Array speichern und in JList ausgeben AWT, Swing, JavaFX & SWT 7
J index im Array aussuchen AWT, Swing, JavaFX & SWT 1
J JavaFX von einem Array aus Buttons herausfinden auf welcher geklickt wurde aus dem Array. AWT, Swing, JavaFX & SWT 1
G JavaFX Fenster 1 Array übertragen zur Fenster 2 AWT, Swing, JavaFX & SWT 0
A Swing Wie Daten in der Form speichern? Array oder ArrayList AWT, Swing, JavaFX & SWT 2
F JList auffüllen aus Array von Instanzen AWT, Swing, JavaFX & SWT 4
kilopack15 JLabels im Array erzeugen AWT, Swing, JavaFX & SWT 2
T AWT Grafik"Array" einzelne Elemente verschieben AWT, Swing, JavaFX & SWT 1
M JavaFX - Array in View auslesen AWT, Swing, JavaFX & SWT 12
S AWT Daten über TextField und Button in array speichern AWT, Swing, JavaFX & SWT 5
E AWT Bilder als "Array" abspeichern. AWT, Swing, JavaFX & SWT 4
J JavaFX Buttons mit Array erzeugen AWT, Swing, JavaFX & SWT 1
beatles Swing JTextField - Game Status aus Array anzeigen AWT, Swing, JavaFX & SWT 3
KilledByCheese Swing 2D JLabel Array Maze zeichnen AWT, Swing, JavaFX & SWT 2
Viktim Array Spielfeld wird in GUI gedreht AWT, Swing, JavaFX & SWT 5
T JTextField Array im JPanel wird nicht komplett angezeigt AWT, Swing, JavaFX & SWT 7
S AWT JTextFields durch Array im JMenu erzeugen? AWT, Swing, JavaFX & SWT 19
L JComponents in Array AWT, Swing, JavaFX & SWT 11
L Array mit JButton, wie rausfinden auf welche JButton geklickt wurde + index des JButtons ausgeben AWT, Swing, JavaFX & SWT 4
B Array Java AWT, Swing, JavaFX & SWT 0
S JTable Daten aus Array AWT, Swing, JavaFX & SWT 9
K Array von einer Action zur anderen bringen AWT, Swing, JavaFX & SWT 7
D Swing ArrayList in Jlist/ List oder Array in JList/List AWT, Swing, JavaFX & SWT 5
O 2D Weltgenerieren - 2D Array AWT, Swing, JavaFX & SWT 1
W Bei Button-klick neuen button in array hinzufügen AWT, Swing, JavaFX & SWT 7
H Image im Array per Knopfdruck ändern AWT, Swing, JavaFX & SWT 6
A JComboBox mit Array aktualisieren AWT, Swing, JavaFX & SWT 7
L Zwei String Array in eine Spalte einfügen AWT, Swing, JavaFX & SWT 1
F Swing Java Swing Array in Datei und wieder raus AWT, Swing, JavaFX & SWT 7
L 2D-Grafik PNG Datei in JLabel Array Problem AWT, Swing, JavaFX & SWT 4
R Array aus einem Objekt auslesen AWT, Swing, JavaFX & SWT 4
S ComboBox-Werte aus einem Array an Textfields übergeben AWT, Swing, JavaFX & SWT 3
A Array von JLabel mit Grafiken anzeigen AWT, Swing, JavaFX & SWT 3
J 2D-Grafik String aus array wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
S Swing Jcombobox und array AWT, Swing, JavaFX & SWT 6
M Swing Array aus anderer Klasse AWT, Swing, JavaFX & SWT 6
P 2D-Grafik versch. Rectangles aus array von textfelder zeichen AWT, Swing, JavaFX & SWT 6
V Swing Componenten Array AWT, Swing, JavaFX & SWT 3
P Grauwerte aus 3-Dimensionalem Array in Bild AWT, Swing, JavaFX & SWT 9
F Bilder werden nicht in's Array geladen AWT, Swing, JavaFX & SWT 4
B Swing JMenuButtons mit Funktionen aus Array erstellen AWT, Swing, JavaFX & SWT 4
A JComboBox-Inhalt durch neues Array ersetzen AWT, Swing, JavaFX & SWT 2
A JButton in einem Array aktualisieren AWT, Swing, JavaFX & SWT 8
K Applet Wieso kann ich keine Array im Applet initialisieren AWT, Swing, JavaFX & SWT 13
S String Array Ausgabe im JLabel ??? AWT, Swing, JavaFX & SWT 8
L Fehler beim erstellen einer Tabelle mithilfe von 2d-Array AWT, Swing, JavaFX & SWT 3
H 2D-Grafik BufferedImage aus Integer-Array AWT, Swing, JavaFX & SWT 3
H Puzzle - Listen erstellen, array & liste vergleichen AWT, Swing, JavaFX & SWT 28
H Puzzle - Erkennen wenn gelöst (array vergleichen) AWT, Swing, JavaFX & SWT 10
H Bilder in Array zufällig anordnen AWT, Swing, JavaFX & SWT 4
W Swing Bei einem 2-dimensionalen array, bei mouseClicked index zuordnen AWT, Swing, JavaFX & SWT 2
Jats Bitte um Hilfe bei JComboBox mit Array AWT, Swing, JavaFX & SWT 6
N Swing Von 2 dimensionalem Array auf JTextfield schließen und färben AWT, Swing, JavaFX & SWT 6
H JList zeigt die Daten aus dem Array nicht an! AWT, Swing, JavaFX & SWT 13
M Swing Zweidimensionales Array mit Farben erzeugen AWT, Swing, JavaFX & SWT 16
W Button Array ? AWT, Swing, JavaFX & SWT 10
X JLabel und mehrdimensionales Array AWT, Swing, JavaFX & SWT 2
T Swing 2d Array zeichnen AWT, Swing, JavaFX & SWT 4
M ArrayList in 2D Array umfüllen AWT, Swing, JavaFX & SWT 9
F Swing String Array mit JTextArea anzeigen AWT, Swing, JavaFX & SWT 13
E ResultSet als Array an JTable übergeben AWT, Swing, JavaFX & SWT 9
D Bild zeichnen lassen aus array, null pointer Exception AWT, Swing, JavaFX & SWT 2
D Pixel in ein Array einlesen AWT, Swing, JavaFX & SWT 2
S Koordinaten aus Array verwenden zum zeichnen auf JPanel?! AWT, Swing, JavaFX & SWT 3
Developer_X Verzwicktes Problemchen mit Panel-Array AWT, Swing, JavaFX & SWT 5
JavaKaffee Array auslesen in jTextPane? AWT, Swing, JavaFX & SWT 9
N Swing Problem beim Einlesen von Jtable in Array AWT, Swing, JavaFX & SWT 5
S Swing ComboBox aus Array befüllen AWT, Swing, JavaFX & SWT 2
T Swing JTable und mehrdimensionales Array AWT, Swing, JavaFX & SWT 2
D Verschiedene ActionEvents für ein JButton-Array AWT, Swing, JavaFX & SWT 2
B Keine Änderungen an JLabel durch Array möglich AWT, Swing, JavaFX & SWT 12
W Objekt-array als Raster visualisieren AWT, Swing, JavaFX & SWT 3
C JPanel-Array in GridLayout AWT, Swing, JavaFX & SWT 4
S Array+INfoBox AWT, Swing, JavaFX & SWT 7
A Array wird im JOptionPane mehrfach ausgegeben AWT, Swing, JavaFX & SWT 3
B JButton+Array AWT, Swing, JavaFX & SWT 2
R zweidim. JButton-Array in Schleife -> NullPointerExceptio AWT, Swing, JavaFX & SWT 2
D Fehler bei Button Array AWT, Swing, JavaFX & SWT 8
S Suchen im String-Array AWT, Swing, JavaFX & SWT 3
M Separator in Array AWT, Swing, JavaFX & SWT 8
C Out of Bounds Exception, Array of JTextField AWT, Swing, JavaFX & SWT 6
C JButton Array - ActionListener AWT, Swing, JavaFX & SWT 10
S SimpleAttributeSet / Array AWT, Swing, JavaFX & SWT 3
B JButton array und ActionListener AWT, Swing, JavaFX & SWT 2
G JTextArea Objekte in einem Array speichern? AWT, Swing, JavaFX & SWT 3
S Großes Array Problem AWT, Swing, JavaFX & SWT 10
G Listener (anonyme Klasse) jedem Element eines Array zuweisen AWT, Swing, JavaFX & SWT 5
S array to int? AWT, Swing, JavaFX & SWT 9
T Textfelder als Klasse im Array? AWT, Swing, JavaFX & SWT 3
N Image Array einer anderen Klasse bearbeiten AWT, Swing, JavaFX & SWT 2
S Zweidimensionales Array - JToggleButton AWT, Swing, JavaFX & SWT 3
G Textfeld Auslesen und in Array schreiben (bei newline) AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben