Wie mehrere Grafiken auf JPanel anzeigen lassen? (Observer pattern?)

Status
Nicht offen für weitere Antworten.

Drizzit

Mitglied
Folgende Aufgabenstellung:
http://www.ifi.uzh.ch/rerg/fileadmi...tware_engineering_hs07/uebungen_se/seueb4.pdf
Die gesamte Landkarte (bzw. ein eigens definierter Ausschnitt) soll graphisch angezeigt werden und es soll darauf ersichtlich sein wo sich zum aktuellen Zeitpunktwelche Tiere befinden.
Eine interaktive Steuerung der Simulationsgeschwindigkeit soll möglich sein, zum Beispiel
1er, 10er und 100er Schritte. Ausserdem soll ein konstanter Ablauf mit zum Beispiel 50 Schritten pro Sekunde möglich sein.

Es war also eine Konsolenanwendung gegeben und es muss dafür eine GUI erstellt werden, auf der die Tiere (als Kreise) angezeigt werden.
Ich hab es jetzt immerhin soweit geschafft, dass die Tiere mit der aktuellen Position im Panel angezeigt werden. Aber das immer nur für kurze Zeit. Sobald eine neue Iteration der Schleife folgt, verschwindet das jeweilige Tier und es wird nur noch das neue angezeigt.

Wie schaffe ich es, dass ALLE TIERE angezeigt werden und nicht nur das Tier, das gerade gezeichnet wird? Falls ein Tier seine Position wechselt bzw. stirbt, soll das natürlich auch angezeigt werden (Kreis wird verschoben / entfernt).
--> Unser Prof. erwähnte irgendwas von "Observer Pattern" implementieren, aber wie?!

Java:
	public SavannahSim(int lions, int antilopes) {

		IO.writeLn("----------------------------------------------");
		IO.writeLn("Savannah Simulation, Version 0.9");
		IO.writeLn("Animals: Lions: " + lions + ", Antilopes: " + antilopes
				+ ".");
		IO.writeLn("----------------------------------------------");
		animal = new Animal[lions + antilopes];

		// creating lions and antilopes
		for (int i = 0; i < lions; i++) {
			animal[i] = new Lion(i + 1/* , s */);
		}
		for (int i = lions; i < (lions + antilopes); i++) {
			animal[i] = new Antilope(i + 1 - lions/* , s */);
		}

		UnserPanel p1 = new UnserPanel();

		new UnserFrame(p1);

		while (livingAnimals() > 1) {
			for (int i = 0; i < animal.length; i++) {

				// Verzoegern des Zeichnens um x ms
				long t0, t1;
				t0 = System.currentTimeMillis();
				do {
					t1 = System.currentTimeMillis();
				} while (t1 - t0 < 500);

				if (animal[i].isAnimalAlive()) {
					System.out.println(animal[i]);

					//Loewe oder Antilope einzeichnen
					p1.paint(p1.getGraphics(), animal[i]);

					animal[i].move();
				}
				for (int k = 0; k < animal.length; k++) {
					if (k != i && animal[i].isAnimalAlive()
							&& animal[k].isAnimalAlive()
							&& animal[i].isNear(animal[k])) {

						p1.paint(p1.getGraphics(), animal[k]);

						System.out.println(animal[i] + " Meets " + animal[k]);
						animal[i].meet(animal[k]);
						System.out.println("Result: " + animal[i] + ", "
								+ animal[k]);
					}
				}
			}
			iterations++;
			
		}

Bin für jeden Tipp dankbar! :)
 

Anhänge

  • tierpark.zip
    28,1 KB · Aufrufe: 1
Zuletzt bearbeitet:

Schandro

Top Contributor
Die goldenen Regeln dieses Forums:

1.) Strings vergleicht man mit equals()

2.) NIEMALS getGraphics() auf ein Component zum zeichnen aufrufen!

und ein paar weitere^^

Hier mal ein Beispielcode wie man normalerweise zeichnet:
Java:
public class XXX{
 
    public static void main(String[] args){
        new XXX();}
 
 
    private JFrame window = new JFrame();
    private int cnt = 50;
 
    public XXX(){
        window.setBounds(100,100,290,150);
 
        window.add(panel);
 
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                window.setVisible(true);
            }
        });
 
        Thread myThread = new Thread(new Runnable(){
            public void run(){
                while(true){
                    try{Thread.sleep(20);}catch(Exception e){e.printStackTrace();}
                    ++cnt;
                    if(cnt > 200){
                        cnt = 50;
                    }
                    panel.repaint();
                }
            }
        });
        myThread.start();
    }
 
 
    JPanel panel = new JPanel(){
        public void paintComponent(Graphics g){
            super.paintComponent(g);
            g.drawRect(cnt,50,30,20);
        }
    };
 
}
Es wird immer alles innerhalb der paintComponent Methode gezeichnet (man kann einzelne Sachen natürlich in Methoden auslagern, diese dürfen dann aber nur von paintComponent aus aufgerufen werden).
Durch Membervariablen kann man "von außen" paintComponent sagen was es zeichnen soll.
Solange man den repaint() Aufruf ohne Parameter benutzt muss man immer die komplette Zeichenfläche neu malen, bei jedem Aufruf von paintComponent .
 
Zuletzt bearbeitet:

Drizzit

Mitglied
Ok. Danke schonmal!

Aber wie wende ich das dann an?
Einfach:
Java:
XXX x = new XXX();
in meiner main und dann x.paintComponent(); ??

Und wie übergebe ich paintComponent ein Objekt, damit ich Zugriff auf die Koordinaten + Objekttyp habe?

Java:
public void paintComponent(Graphics g, Animal a) {
			super.paintComponent(g);
			if(a.getSpecies().equals("Lion")){
				g.setColor(Color.red);		
			}
			if(a.getSpecies().equals("Antilope")){
				g.setColor(Color.green);
			}

			g.fillOval(a.coord.getX(), a.coord.getY(), 10, 10);
		}
So? Eher nicht, oder? ^^

Bin mit GUI Programmierung im moment bissl überfordert, wie man sicher merkt. :oops:
 

Schandro

Top Contributor
Eben nicht!

1.) Du rufst niemals selber paintComponent auf! Das Swing-Framework ruft es für dich auf wenn es das für notwendig hält oder wenn du es darum bittest:
panel.repaint()

2.) Du kannst paintComponent keine Variablen übergeben. Deswegen muss man den Umweg über Membervariablen benutzen. Guck dir einfach nochmal meinen Beispielcode an, die einzige Membervariable die zur Kommunikation mit paintComponent dient ist bei meinem Code "cnt". Man kann aber natürlich beliebig viele Membervariablen beliebiger Typen dafür einsetzen.


Übrigens benutz ich dieses XXX als Klassennamen nur in Beispielcodes, in richtigen Codes sollte man natürlich passendere Namen benutzen^^
 
Zuletzt bearbeitet:

Drizzit

Mitglied
Übrigens benutz ich dieses XXX als Klassennamen nur in Beispielcodes, in richtigen Codes sollte man natürlich passendere Namen benutzen^^
Das ist das einzige, was ich an deinem Beispiel bisher verstanden habe. ^^

Also ich hab wohl gerade den totalen Hänger..... werd den Kram jetzt erstmal über Nacht ruhen lassen, vielleicht hab ich morgen 'nen Geistesblitz :autsch:
 

Drizzit

Mitglied
Dieser Artikel erklärt den Gebrauch der Methoden "paintComponent" und "repaint" in einer Swing Anwendung:
Malen in Swing Teil 1: der grundlegende Mechanismus - Byte-Welt Wiki
Dankeschön!
Zumindest die Component hab ich in etwa genauso hinbekommen wie im Beispiel auf der Seite. :)

Habe jetzt aber noch einige Fragen, vor allem dieses "runnable" irritiert mich dann doch...konnte es jedenfalls nicht zum Laufen bringen, als ich versucht habe es in mein Programm mit einzubauen.

Meine SavannahSim sieht momentan so aus (was ich selbst geschrieben habe, ist mit einem Kommentar versehen):
Java:
package simulation;

import javax.swing.*;

/**
 * The class SavannahSim handles the execution parameters, does the savannah
 * simulation and also offers methods to count the number of antilopes and lions
 * alive.
 * 
 * @author Projektarbeit
 * @copyright Systems Simulation Inc. 2009
 * @history 2009-03-01 CC built the application. 2009-03-10 CC documentations
 *          and review.
 * @version 2009-05-13 CC v1.0
 * 
 * @responsibilities CC
 * @see simulation.Animal
 * @see simulation.Antilope
 * @see simulation.Lion
 */

public class SavannahSim {

	private Animal[] animal;

	private int iterations = 0;

	public static void main(String[] args) {
		// also hand-over of two parameters when executing e.g. "java
		// SavannahSim 2 4", meaning: 2 Lions and 4 Antilopes.
		new SavannahSim(Integer.parseInt(args[0]), Integer.parseInt(args[1]));
	}

	/**
	 * Creates all the animals, lets the animals randomly meet each other until
	 * there is a winner, outputs all animals status.
	 * 
	 * @pre lions != null && antilopes != null;
	 * @post
	 * @param lions
	 *            The number of lions.
	 * @param antilopes
	 *            The numer of antilopes.
	 */
	public SavannahSim(int lions, int antilopes) {

		IO.writeLn("----------------------------------------------");
		IO.writeLn("Savannah Simulation, Version 0.9");
		IO.writeLn("Animals: Lions: " + lions + ", Antilopes: " + antilopes
				+ ".");
		IO.writeLn("----------------------------------------------");
		animal = new Animal[lions + antilopes];

		// creating lions and antilopes
		for (int i = 0; i < lions; i++) {
			animal[i] = new Lion(i + 1/* , s */);
		}
		for (int i = lions; i < (lions + antilopes); i++) {
			animal[i] = new Antilope(i + 1 - lions/* , s */);
		}
		
		/* VON MIR EINGEFUEGT - ANFANG*/
		JFrame f = new JFrame("Savannah Simulation 2009");
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		Savannah savannah = new Savannah();
		
		f.setSize(400,400);
		f.add(savannah);
		f.setVisible(true);
		/* VON MIR EINGEFUEGT - ENDE*/

		while (livingAnimals() > 1) {
			for (int i = 0; i < animal.length; i++) {

				/* VON MIR EINGEFUEGT - ANFANG*/
				long t0, t1;
				t0 = System.currentTimeMillis();
				do {
					t1 = System.currentTimeMillis();
				} while (t1 - t0 < 500);
				/* VON MIR EINGEFUEGT - ENDE*/

				if (animal[i].isAnimalAlive()) {
					System.out.println(animal[i]);

					/* VON MIR EINGEFUEGT - ANFANG*/
					savannah.setAnimal(animal[i]);
					savannah.repaint();
					/* VON MIR EINGEFUEGT - ENDE*/
					
					animal[i].move();
				}
				for (int k = 0; k < animal.length; k++) {
					if (k != i && animal[i].isAnimalAlive()
							&& animal[k].isAnimalAlive()
							&& animal[i].isNear(animal[k])) {

						System.out.println(animal[i] + " Meets " + animal[k]);
						animal[i].meet(animal[k]);
						System.out.println("Result: " + animal[i] + ", "
								+ animal[k]);
					}
				}
			}
			iterations++;
			
		}

		// simulation as long there isn't a winner.

		// print the results
		IO.writeLn("----------------------------------------------");
		IO.writeLn("All animals, status:");
		IO.writeLn("----------------------------------------------");
		for (int i = 0; i < lions + antilopes; i++) {
			IO.writeLn(animal[i].toString());
		}
		IO.writeLn("Number of iterations: " + iterations); // program execution
															// is done after
															// that.
	}

	public int livingAnimals() {
		int living = 0;
		for (int i = 0; i < animal.length; i++) {
			if (animal[i].isAnimalAlive()) {
				living++;
			}
		}
		return living;
	}

} // class SavannahSim

Wie kann ich hier dieses run() einbauen? In die main? Aber wie füge ich dann die Component in den Frame ein?
Meine einzige Idee dazu wäre einfach eine Savannah-Klassenvariable zu erstellen und diese dann in der main zu initialisieren.

Eigentlich bin ich ja jetzt genauso weit wie am Anfang, nur dass es diesmal halbwegs schön programmiert wurde. ;)
Das Problem mit dem "Verschwinden" der einzelnen Punkte ist damit ja auch noch nicht aus der Welt geschafft....


EDIT
--> jetzt hab ich endlich repaint(x,y,size,size) kapiert...
aber irgendwie wills doch nicht so ganz..
habe eben einfach nur zum Testen folgendes geschrieben (alle tiere anzeigen):
Java:
		for(Animal a : animal){
			savannah.setAnimal(a);
			savannah.repaint(a.coord.getX()*20,a.coord.getY()*20,10,10);
		}
hier wird am Ende aber nur ein einziges Tier angezeigt. Sobald ich aber eine Verzögerung einbaue:
Java:
		for(Animal a : animal){
			savannah.setAnimal(a);
			savannah.repaint(a.coord.getX()*20,a.coord.getY()*20,10,10);

			long t0, t1;
			t0 = System.currentTimeMillis();
			do {
				t1 = System.currentTimeMillis();
			} while (t1 - t0 < 500);
		}
funktioniert es ohne Probleme! Wie kann das sein? ???:L
 
Zuletzt bearbeitet:

Dragonfire

Bekanntes Mitglied
"Runnable" ist ein Java Interface. Wenn man einen neuen Thread erstellt, kann man dem Konstruktor ein Object von Runnable mitgeben damit der Thread etwas hat was er ausführen kann.
=> Runnable wird "passiv" benutzt.

Threads sind eigentlich schon ein eigenes Thema ^^

Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 11 Threads und nebenläufige Programmierung

hier direkt ein paar Infos:

Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 11.2 Threads erzeugen

oder:

Processes and Threads (The Java™ Tutorials > Essential Classes > Concurrency)


PS.: Neue Threads sind manchmal vonnöten,
damit die GUI, genau der The Event Dispatch Thread
(The Event Dispatch Thread (The Java™ Tutorials > Creating a GUI with JFC/Swing > Concurrency in Swing)) nicht blockiert.

Klassisch Beispiel sind Ladevorgänge.
Das Programm lädt etwas aus einer Datenbank
und das dauert ein bisschen,
(das Netzwerk ist ja ein Flaschenhals)
deswegen hat man einen Ladebalken mit Abbrechen Button.
Würde die Daten im selben Thread geladen werden,
dann würde der Fortschirtt/Ladebalken nicht nur bei 0% stehen bleiben,
sondern die GUI, vor allem der Abbrechen Button würde blockiert werden,
sodass der Benutzer den ganzen Vorgang nicht abbrechen kann
(typischer Freeze, Fenster ist eingefroren^^).
 
Zuletzt bearbeitet:

Schandro

Top Contributor
"runnable" ist in Java ein Interface und für die Erzeugung eines neuen Threads zuständig
Nur ne kleine Korrektur, so wäre der Satz richtig:
"Runnable" ist ein Java Interface. Wenn man einen neuen Thread erstellt, kann man dem Konstruktor ein Object von Runnable mitgeben damit der Thread etwas hat was er ausführen kann.
=> Runnable wird "passiv" benutzt.
 

Dragonfire

Bekanntes Mitglied
Verbessert ^^
Gut das ich nicht mehr falsch habe :D
(oder ich hoffe es)

So sieht das dann in Quellcode aus:

Java:
Thread t = new Thread( new ObjectImplementsRunnable() ); 
t.start();

der Autor von Byte-Welt Wiki hat gleich eine anonyme innere Klasse für das Object genommen,
dass Runnable implementiert.
Ich glaube das verwirrt schnell.
 

Drizzit

Mitglied
So!
Habe es jetzt mittlerweile so einigermaßen hinbekommen, dass die Tiere richtig gezeichnet werden.
Jetzt folgt aber schon das nächste Problem....ich hab keine Ahnung wie ich es schaffe, dass das Programm erst nach einem Klick auf einen Button startet.

Habe vorhin schonmal einen Versuch gestartet, der aber kläglich gescheitert ist. (Konsole rattert munter vor sich hin, auf der GUI aber tut sich nix :bahnhof: )

Wäre super wenn sich jemand erbarmt und kurz mal über das Projekt drüberschauen könnte. :rtfm:
 

Anhänge

  • Tierpark.zip
    29 KB · Aufrufe: 2

Dragonfire

Bekanntes Mitglied
Du musst auf den Button ein ActionListener setzten:

How to Write an Action Listener (The Java™ Tutorials > Creating a GUI with JFC/Swing > Writing Event Listeners)

Würde ungefähr so aussehen,
wenn du eine "innere anonyme Klasse" benutzen würdest:
Java:
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

...

JButton start = new JButton("Start");
start.addActionListener(new ActionListener()
{
    public void actionPerformed(ActionEvent e)
    {
        //Simulation starten
    }
});
frame.add(start, BorderLayout.SOUTH);
...
 

Drizzit

Mitglied
genau das habe ich vorhin schon probiert. dann läuft zwar die simulation, aber auf der gui wird nix angezeigt! ;(
 

André Uhres

Top Contributor
Einen zusätzlichen Thread (Runnable) brauchst du in deinem konkreten Fall nicht direkt, denn du hast schon zwei Threads, ohne es zu wissen: den InitialThread und den EventDispatchThread. Eine Simulation braucht immer eine Verzögerung, sonst läuft alles innerhalb weniger Mirkosekunden ab und ist mit dem menschlichen Auge nicht mehr nachzuvollziehen.

EDIT: Upps, sorry da hab ich wohl einige Beiträge verpasst!
 
Zuletzt bearbeitet:

Dragonfire

Bekanntes Mitglied
Also ich vermute mal ein Thread Problem
und bei mir läuftst auch.

Soweit wie ich das gesehen habe,
blockiert das Event vom Button dann alle Zeichenvorgänge
(Fenster ist eingefroren).

Deswegen hab ich jetzt erstmal alle Berechnung und Zeichenvorgänge in einen
neuen Thread gepackt:

Java:
final JButton start = new JButton("Start");
start.addActionListener(new ActionListener()
{
    public void actionPerformed(ActionEvent e)
    {
        start.setEnabled(false);
        new Thread()
        {
            public void run()
            {
                //Starte Sim (keine Parameter übergeben noch abfangen)
                new SavannahSim(2,2);
            }
        }.start();
    }
});
frame.add(start, BorderLayout.SOUTH);


Hier zum Nachlesen:

Lesson: Concurrency in Swing (The Java™ Tutorials > Creating a GUI with JFC/Swing)

PS.: Unbedingt den Button deaktivieren,
sonst wird beim erneuten Klicken eine neue Sim gestartet
(sieht lustig aus,
vor allem auf der Konsole^^)

EDIT:Ich bin verwirrt^^ Gibts es eine Lösung ohne neuen Thread oO ? Eigentlich ja schon, den der Intial Frame müsste ja frei sein,
aber er will ja Zeichen ... Hier muss mal ein Experte genauer schauen ;)
 
Zuletzt bearbeitet:

Drizzit

Mitglied
@Dragonfire
Dankeschön!
Immerhin geht jetzt was, das ist doch schonmal 1000x besser als garnix! ;) Und dass man extra einen neuen Thread machen muss ist ja nun auch nicht soooooo tragisch.

So.....und jetzt gehts auf zum letzten Punkt der Aufgabenstellung.
Eine interaktive Steuerung der Simulationsgeschwindigkeit soll möglich sein, zum Beispiel
1er, 10er und 100er Schritte. Ausserdem soll ein konstanter Ablauf mit zum Beispiel 50 Schritten pro Sekunde möglich sein.
*Radio Buttons reinfrickeln geh* :-D
 

Dragonfire

Bekanntes Mitglied
Am Anfang schon. "repaint" läuft ja eh auf dem EDT, also könnte die Simulation durchaus auf dem IT laufen. Ob das sinnvoll ist, sei dahingestellt. Falls wir die Simulation z.B. stoppen und neu starten wollen, steht der IT nicht mehr zur Verfügung.

Ich Frage sicherheitshalber nochmal nach:


Ohne Startbutton läuft die Simulation im IT.

Wenn der Startbutton erzeugt wird,
dann ist der IT schon beendet,
deswegen muss ein neues Thread erzeugt werden?
 

Drizzit

Mitglied
Jawoll!! Es funktioniert jetzt alles so wie es soll!
(zumindest dachte ich das noch vor wenigen Minuten ^^)

Es ist jetzt eigentlich alles fertig, aber ich habs eben einem Kumpel zum Testen geschickt. Das war seine Antwort:
ist das nur bei mir so???

Als ich die .jar geöffnet habe, konnte ich den Button und die DropDown-liste nicht sehen. Musste erst die Größe des Fensters anpassen (Untere 'ecke' ziehen).
;(

Woran liegt das denn nun wieder? Bei mir öffnet sich das Fenster in der richtigen Größe!

Java:
		// Frame und GUI
		JFrame frame = new JFrame("Savannah Simulation 2009");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setLayout(new BorderLayout());
		gui.setPreferredSize(new Dimension(340, 380));
		gui.setBackgroundImage(); // Hintergrundbild
		frame.add(gui, BorderLayout.CENTER);
		frame.pack();
		frame.setVisible(true);
		frame.setLocationRelativeTo(null);

		// ComboBox mit verschiedenen Verzoegerungen zur Auswahl
		String[] delays = { "kein Delay", "empfohlen (100ms)",
				"mittleres Delay (500 ms)", "starkes Delay (1 Sekunde)" };
		final JComboBox delay = new JComboBox(delays);

		// Startbutton mit ActionListener
		final JButton start = new JButton("Start");

		// Panel fuer Start-Button und ComboBox
		JPanel controls = new JPanel();
		controls.setLayout(new FlowLayout());
		controls.add(delay);
		controls.add(start);

		start.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				
				// Start-Button wird waehrend der Simulation gesperrt
				start.setEnabled(false);

				// Setzen der Verzoegerung (Nach Auswahl in ComboBox)
				int s = delay.getSelectedIndex();
				switch (s) {
				case 0:
					sleep = 0;
					break;
				case 1:
					sleep = 100;
					break;
				case 2:
					sleep = 500;
					break;
				case 3:
					sleep = 1000;
					break;
				}
				new Thread() {
					public void run() {
						if (args.length == 0) {
							// Wenn keine Parameter angegeben wurden: 4 Loewen, 4 Antilopen
							new SavannahSim(4, 4);
							// Nach der Simulation wird der Start-Button wieder freigegeben
							start.setEnabled(true);
						} else {
							// Simulation mit uebergebenen Parametern starten
							new SavannahSim(Integer.parseInt(args[0]), Integer
									.parseInt(args[1]));
							// Nach der Simulation wird der Start-Button wieder freigegeben
							start.setEnabled(true);
						}
					}
				}.start();
			}
		});
		frame.add(controls, BorderLayout.SOUTH);

	}
 

Anhänge

  • Tierpark.zip
    80,7 KB · Aufrufe: 1
  • Tierpark.jar
    21,2 KB · Aufrufe: 3

Schandro

Top Contributor
du solltest JFrame#setVisible immer als letztes aufrufen. Zurzeit addest du noch Componenten nachdem du pack und setVisible aufgerufen hast...
 

Drizzit

Mitglied
@Dragonfire
hab vergessen das hintergrundbild mit hochzuladen --> muss ja immer im selben ordner sein. dann gehts

@Schandro
jo das hab ich gerade gemacht ^^ thx

jetzt wollte ich gerade noch "frame.setResizable(false)" einbauen....aber dann kommt rechts plötzlich noch ein grauer rand zum vorschein

edit:
Java:
...
		frame.add(controls, BorderLayout.SOUTH);
		frame.setResizable(false);
		frame.pack();
		frame.setVisible(true);
		frame.setLocationRelativeTo(null);
	}
hah! so gehts jetzt :D
 
Zuletzt bearbeitet:

André Uhres

Top Contributor
Ich Frage sicherheitshalber nochmal nach:
Ohne Startbutton läuft die Simulation im IT.
Wenn der Startbutton erzeugt wird,
dann ist der IT schon beendet,
deswegen muss ein neues Thread erzeugt werden?
Der IT ist beendet, wenn die main beendet ist. Wenn wir auf einen Button klicken, sind wir automatisch auf dem EDT. Da wir den EDT nicht für die Simulation benutzen können, müssen wir einen neuen Thread erzeugen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
stroggi Swing Mehrere transparentes Objekte (Grafiken) über einem Bild (JLabel) darstellen AWT, Swing, JavaFX & SWT 4
T Swing Mehrere Ausgaben in JTextArea AWT, Swing, JavaFX & SWT 2
H Mehrere Panels auf JFrame AWT, Swing, JavaFX & SWT 8
S Mehrere Tabellen Zellen gleichzeitig färben AWT, Swing, JavaFX & SWT 5
Apfelbaum2005 Swing JFrame mehrere JPanels mit unterschiedlichen Formen hinzufügen AWT, Swing, JavaFX & SWT 1
K JavaFX unterschiedliche (mehrere Fenster) in seperater Main Methode AWT, Swing, JavaFX & SWT 26
I Scene Builder - mehrere Seiten AWT, Swing, JavaFX & SWT 6
P Swing Mehrere JLabels mit ImageIcon in JPanel lesen AWT, Swing, JavaFX & SWT 1
schoel27 Mehrere JButtons sollen das gleiche Event auslösen AWT, Swing, JavaFX & SWT 2
Z GUI Forms - Mehrere Fenster in einem Projekt AWT, Swing, JavaFX & SWT 18
M mehrere jTextField untereinander AWT, Swing, JavaFX & SWT 1
N Bilder auf Button einfügen und mehrmals ändern (ein Button, mehrere ActionListener) AWT, Swing, JavaFX & SWT 2
B Swing Sudoku: Laden / Speichern von Zahlen aus/in mehrere JTextFields aus/in eine(r) Textdatei AWT, Swing, JavaFX & SWT 9
M JavaFX JavaFX in mehrere Controller AWT, Swing, JavaFX & SWT 21
R mehrere buttons mit forschleife kreieren und individuell bearbeiten AWT, Swing, JavaFX & SWT 1
N JavaFX 1 Listener für mehrere ChoiceBoxen AWT, Swing, JavaFX & SWT 3
N Textdatei GUI, Text in Textarea anzeigen mehrere Zeilen AWT, Swing, JavaFX & SWT 1
temi JavaFX Mehrere Views mit Stage.setScene() oder mit Scene.setRoot()? AWT, Swing, JavaFX & SWT 7
P Swing Mehrere JPanels auf ein JFrame hinzufügen? AWT, Swing, JavaFX & SWT 2
T Swing Tetraeder - mehrere Punkte verbinden? - Ansätze gesucht AWT, Swing, JavaFX & SWT 2
K JavaFX in mehrere Controller aufteilen AWT, Swing, JavaFX & SWT 29
K JavaFX in mehrere Controller aufteilen AWT, Swing, JavaFX & SWT 0
K Mehrere Linien zeichnen AWT, Swing, JavaFX & SWT 8
J JavaFX - mehrere Views, Model durchreichen AWT, Swing, JavaFX & SWT 10
it_is_all Swing Mehrere JComboBoxen - wie die versch. Boxen mit ItemStateChange auslesen? AWT, Swing, JavaFX & SWT 3
M Swing Mehrere Textfelder mit ScrollBars - Größe der Felder AWT, Swing, JavaFX & SWT 0
W JavaFX Mehrere Klassen in ein TableView AWT, Swing, JavaFX & SWT 6
F AWT mehrere Panels in einem Frame AWT, Swing, JavaFX & SWT 17
L JavaFX Mehrere JavaFX Szenen mit einem Menü AWT, Swing, JavaFX & SWT 1
D Java FXML mehrere Fenster AWT, Swing, JavaFX & SWT 4
F JavaFX Mehrere Stages "managen" AWT, Swing, JavaFX & SWT 2
r4w Changelistener auf mehrere Textfelder AWT, Swing, JavaFX & SWT 5
H Swing + Paint: Mehrere Objekte zeichnen lassen AWT, Swing, JavaFX & SWT 3
S Swing Mehrere Modal-Dialoge übereinander AWT, Swing, JavaFX & SWT 5
T 2D-Grafik JFreeChart mehrere Y-Achsen AWT, Swing, JavaFX & SWT 2
C JavaFX mehrere Kreise nach Eingabeprozess ausgeben AWT, Swing, JavaFX & SWT 2
Thallius Swing Mehrere tausend "Panels" erstellen AWT, Swing, JavaFX & SWT 3
C Java FX Warnmeldung: Mehrere Fonts gehören derselben Familie und Stil AWT, Swing, JavaFX & SWT 2
J Mehrere JInternalFrame; GetValues AWT, Swing, JavaFX & SWT 1
JG12111989 mehrere Polyline-Objekte zeichnen AWT, Swing, JavaFX & SWT 3
LexeB4F JTable mehrere Zelle selektieren und inhalte Löschen.. Ideen gesucht AWT, Swing, JavaFX & SWT 1
V Tastatur KeyListener für mehrere Buttons AWT, Swing, JavaFX & SWT 1
K JavaFX Mehrere Cell Editors in einem TreeView Item AWT, Swing, JavaFX & SWT 2
KaffeeFan mehrere JTextField durchlaufen AWT, Swing, JavaFX & SWT 4
J Java -8 Action Listener für mehrere Buttons AWT, Swing, JavaFX & SWT 9
T Dynamisch mehrere Checkboxen anlegen AWT, Swing, JavaFX & SWT 2
G JavaFX Menü und mehrere Scenes AWT, Swing, JavaFX & SWT 16
R Swing Mehrere JTextFields mit einem Document Listener AWT, Swing, JavaFX & SWT 2
D Mehrere RadiButtons auswählar AWT, Swing, JavaFX & SWT 3
P Swing JTable mehrere Zeilen markieren AWT, Swing, JavaFX & SWT 1
M Mehrere Jpanel in einem JScrollPane (Layout) AWT, Swing, JavaFX & SWT 2
T JavaFX FXMLController für mehrere FXML? AWT, Swing, JavaFX & SWT 7
G mehrere Action-Abfolgen erfassen AWT, Swing, JavaFX & SWT 6
elischa JFrame über mehrere JPanel und Listener AWT, Swing, JavaFX & SWT 17
X Swing JPanel mehrere Ebenen zeichnen AWT, Swing, JavaFX & SWT 13
J Mehrere Hyperlinks "stilvoll" darstellen. AWT, Swing, JavaFX & SWT 1
G Mehrere Strings um Kreis zeichnen und positionieren AWT, Swing, JavaFX & SWT 0
S JavaFX Mehrere TreeTableView's synchron scrollen AWT, Swing, JavaFX & SWT 0
U Mehrere Oberflächeninstanzen seperat schließen AWT, Swing, JavaFX & SWT 5
J Rahmen um mehrere GUI Einzelteile AWT, Swing, JavaFX & SWT 2
S Layouts, mehrere Buttons nebeneinander AWT, Swing, JavaFX & SWT 2
M Mehrere Fenster innerhalb einer Application AWT, Swing, JavaFX & SWT 3
T Über mehrere Panel zeichnen AWT, Swing, JavaFX & SWT 2
M ActionListener für mehrere Klassen AWT, Swing, JavaFX & SWT 4
T [LWJGL] mehrere Displays? AWT, Swing, JavaFX & SWT 19
SexyPenny90 Mehrere Fenster AWT, Swing, JavaFX & SWT 2
M Handling 1 Fenster mehrere Panels AWT, Swing, JavaFX & SWT 2
Y Mehrere JSlider verlinken AWT, Swing, JavaFX & SWT 6
Java-Insel LayoutManager Ein GridBagLayout-Objekt für mehrere Panels? AWT, Swing, JavaFX & SWT 2
O Swing JLabel mehrere Zeilen AWT, Swing, JavaFX & SWT 2
P mehrere Rectangles per JButton AWT, Swing, JavaFX & SWT 9
B JToolBar dynamisch auf mehrere Zeilen erweitern AWT, Swing, JavaFX & SWT 2
Jats Zeichen auf mehrere JPanels AWT, Swing, JavaFX & SWT 7
G Mehrere Probleme mit Java's GUI AWT, Swing, JavaFX & SWT 6
G Mehrere Layoutprobleme AWT, Swing, JavaFX & SWT 2
Kenan89 JTable mehrere ListSelections AWT, Swing, JavaFX & SWT 2
M TextArea über mehrere Zeilen - wie Zeileanzahl abfragen? AWT, Swing, JavaFX & SWT 5
J Swing JDialog blokiert mehrere JFrames - soll aber nur den aufrufenden blockieren AWT, Swing, JavaFX & SWT 4
A mehrere Zeilen in GUi ausgeben AWT, Swing, JavaFX & SWT 2
N Mehrere Tasks nacheinander ausführen AWT, Swing, JavaFX & SWT 7
C SWT Mehrere Bilder in GUI laden AWT, Swing, JavaFX & SWT 5
propra Mehrere Objekte gleichzeitig verschieben AWT, Swing, JavaFX & SWT 7
M 2D-Grafik Mehrere Linien (nacheinander) übereinander Zeichnen AWT, Swing, JavaFX & SWT 6
M Mehrere JPanel nacheinander?! AWT, Swing, JavaFX & SWT 11
Furtano AWT mehrere Bilder in einen Frame zeichnen + Layout Manager AWT, Swing, JavaFX & SWT 10
K SWT Mehrere Einträge ins Clipboard legen AWT, Swing, JavaFX & SWT 2
C Swing Ein JFrame mehrere Ansichten AWT, Swing, JavaFX & SWT 8
C Swing Mehrere JSlider sollen aufeinander reagieren AWT, Swing, JavaFX & SWT 4
GUI-Programmer JFilechooser, mehrere Datein selektieren und Reihenfolge (2) AWT, Swing, JavaFX & SWT 8
S Mehrere JLists - Wie kennzeichnen? AWT, Swing, JavaFX & SWT 2
S Swing MVC Ein JFrame, mehrere JPanels AWT, Swing, JavaFX & SWT 6
J Mehrere JRadioButtons, aber nur 1 darf ausgewählt sein AWT, Swing, JavaFX & SWT 4
L Swing Mehrere Button die selbe Größe AWT, Swing, JavaFX & SWT 4
B AWT mehrere Fenster schließen AWT, Swing, JavaFX & SWT 8
I Wie mehrere JComboBoxen in Abhängigkeit einer anderen Box ändern? AWT, Swing, JavaFX & SWT 8
G mehrere JPanel in ein (vertikales) JScrollPane AWT, Swing, JavaFX & SWT 8
F Swing Mehrere Textfelder in Scrollpane einfügen und dann zum Scrollen bringen? AWT, Swing, JavaFX & SWT 4
GianaSisters Swing jTable - Feldtext soll mehrere Zeilen haben AWT, Swing, JavaFX & SWT 3
K JFileChooser mehrere Dateien markieren ohne STRG AWT, Swing, JavaFX & SWT 4
D Mehrere JTabel in einem Frame positionieren AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen

Neue Themen


Oben