Zwischen mehreren Bildern wechseln

Status
Nicht offen für weitere Antworten.
O

otto

Gast
en =)

Also ich klicke auf einen Button und dann wird das dazugehörige Bild gezeichnet =) und was vorher da war ist weg =)
Ich bekomme es leider nicht hin auch google kann nicht wirklich helfen, ich hoffe von euch hat jemand einen Plan.

Vielen Dank im voraus !

Code:
package uebung2aufgabe2;

import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

import uebung2aufgabe1.MyJFrame;

public class MyJFrame2 extends JFrame {

	JButton draw1;
	JButton draw2;
	JButton draw3;
	
	JPanel unteresPanel = new JPanel(); 
	JPanel oberesPanel = new JPanel();
	
	BildVersuch2 bild3 = new BildVersuch2();
	Schach bild1 = new Schach();
	Schnecke bild2 = new Schnecke();
	
//	Graphics graphicb1 = bild1.getGraphics();
//	Graphics graphicb2 = bild2.getGraphics();
//	Graphics graphicb3 = bild3.getGraphics();
	
	 public MyJFrame2(){       
	        super.setTitle("My next GUI"); 
	        this.setSize(700,700); 
	        this.setLayout(new BorderLayout());
	        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    
	        Container contentPane = getContentPane(); 
	        contentPane.add(this.unteresPanel,BorderLayout.SOUTH);
	        contentPane.add(this.oberesPanel,BorderLayout.NORTH);
	        this.createAndShowIt();
	 }
	 
	 public void createAndShowIt(){
		 this.draw1=new JButton("draw Bild 1");
		 this.draw2=new JButton("draw Bild 2");
		 this.draw3=new JButton("draw Bild 3");

		 this.unteresPanel.setLayout( new GridLayout(1,2 ) );
		 this.unteresPanel.add(draw1);
		 this.unteresPanel.add(draw2);
	     this.unteresPanel.add(draw3);
	        
	     
	     draw1.addActionListener( new ActionListener () {
	        	public void actionPerformed ( ActionEvent e ) {
	        	oberesPanel.paintComponents(bild1.getGraphics());
	        	}
	        	} );
	     
	     draw2.addActionListener( new ActionListener () {
	    	 	public void actionPerformed ( ActionEvent e ) {
	    	 	oberesPanel.paintComponents(bild2.getGraphics());
	        	}
	        	} );
	     
	     draw3.addActionListener( new ActionListener () {
	        	public void actionPerformed ( ActionEvent e ) {
	        	oberesPanel.paintComponents(bild3.getGraphics());	
	        	}
	        	} );
	     
	     this.setVisible(true); 
	 }
	 

	public static void main(String[] args) {
		MyJFrame2 jframe = new MyJFrame2();

	}

}

Mfg,
otto
 
O

otto

Gast
hmm das trifft es net so ganz bei mir geht es um sachen die ich selbst mit java zeichne, und die sollen halt aus drei einzelnen klassen in einer hauptklasse dem jframe(siehe oben) je nach buttonklick aufgerufne werden
 

flogi

Neues Mitglied
21:34 flo hi jemand da der sich mit gui in java aus kennt ?
flo flo also ich habe 3 canvas paints
flo 21:33 flo und die will ich in einem jframe zeichnen
flo http://nopaste.info/bb4bb72fd0.html
flo wäre nett wenn jemand der zeit hat helfen könnte bitte
21:35 flo komme da absolut net weiter habs mit allem möglichen getestet
flo aber nix greift
flo je nach click auf draw 1 oder 2 oder 3 soll das jeweilige canvas bild gepaintet werden
flo und bei nem click auf dem nächsten dann das andere gezeichnet werden und das alte gelöscht


also das is das problem ganz genau ^^
 

wayne

Bekanntes Mitglied
ok, also gehen wir's mal der reihe nach durch: das erste was mir aufgefallen ist wäre, daß du 3 buttons auf ein JPanel platzierst, welches du mit einem GridLayout versiehst, welches aus einer zeile und zwei spalten besteht. ich vermute deine buttons sollten nebeneinander liegen, deshalb versuche hier "new GridLayout(1,3)". das zweite ist, daß in den ActionListenern der JButtons eine anweisung steht, daß sich das JPanel "oberesPanel" in das jeweilige Bild hinein zu zeichnen hat. das ist aber, nach deiner anfrage zu schließen, genau verkehrt herum. eigentlich willst du ja das bild auf das panel zeichnen. dazu gibts natürlich mehrere möglichkeiten. ich weiß zwar nicht, was deine klassen BildVersuch2, Schach und Schnecke sind, gehe aber davon aus, daß dir die Bilder als Image vorliegen. deshalb empfehle ich dir folgendes in die actionPerformed(...)-methoden einzufügen, anstatt des momentanen codes.
Code:
public void actionPerformed(ActionEvent e){
    oberesPanel.removeAll();
    oberesPanel.add(new JLabel(new ImageIcon(img1)));
}
das ist so ziehmlich die einfachste art ein bild darzustellen. img1 steht für ein Bild der klasse Image welches dein 1. bild repräsentiert. mit den anderen ActionListenern solltest du genauso verfahren.

was mir ausserdem noch aufgefallen ist: momentan wäre es möglich, daß du das 1. bild anzeigen lässt und trotzdem wieder und wieder auf den JButton draw1 klickst und jedesmal das gleiche bild erneut angezeigt wird. das ist überflüssig. und genau für sowas gibt es den JToggleButton. das ist ein Button, welcher nach anklicken gedrückt bleibt. erzeuge draw1-draw3 anstatt aus JButton aus JToggleButton und füge sie alle einer ButtonGroup hinzu. durch letzteres ist sichergestellt, daß immer nur einer der buttons gedrückt ist. ausserdem kannst du ja eigentlich nicht sicher sein, daß die geladenen bilder alle gleichgroß sind und immer vollständig auf dem Frame platz haben. deshalb solltest du anstatt oberesPanel auf das ContentPane des JFrames zu adden lieber ein JScrollPane adden und diesem oberesPanel in seinen Viewport übergeben (einfach new JScrollPane(oberesPanel); ). den aufruf von this kannst du dir sparen, zumindest, solange in der methode kein parameter den selben namen trägt. also vor methodenaufrufen gibt es praktisch keine notwendigkeit den compiler extra darauf hinzuweisen, daß man die methode der aktuellen instanz und nicht die der super-instanz meint. vor allem, da du ja ohnehin die methoden, beispielsweise setSize(...), setLayout(...), setDefaultCloseOperation(...), etc., niemals überschrieben hast, sodaß also auch gar kein missverständnis aufkommen könnte. aber wie gesagt, this benötigst du nur bei variablen, die mit dem selben namen global und in dieser methode als parameter vorhanden sind.

viel erfolg

wayne
 

flogi

Neues Mitglied
vielen dank konnte das problem mit deinen tipps lösen !

img war es nicht es waren paints aber funktioniert jetzt noch danke !
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Swing JAVA GUI Übergabe von Werten zwischen mehreren Fenstern/Klassen AWT, Swing, JavaFX & SWT 10
R Navigieren zwischen mehreren Fenstern AWT, Swing, JavaFX & SWT 7
M JavaFX Abstand zwischen AnchorPane und Labels in dem HBox halten AWT, Swing, JavaFX & SWT 1
U 2dgraphics unterschied zwischen .scale und AffineTransform.getScaleInstance AWT, Swing, JavaFX & SWT 4
S JavaFX Fehler zwischen View und Controller bei MouseEvent (MVC) AWT, Swing, JavaFX & SWT 13
missy72 JavaFX TableView Spalte zwischen den Zeilen AWT, Swing, JavaFX & SWT 5
L Kommunikation zwischen Klassen / Konstruktoren bei Swing AWT, Swing, JavaFX & SWT 9
Z Swing Kann man denn abstand zwischen zwei Buttons berechnen AWT, Swing, JavaFX & SWT 5
M Kommunikation zwischen zwei Stages AWT, Swing, JavaFX & SWT 0
T JavaFX - Datenübergabe zwischen Scenes AWT, Swing, JavaFX & SWT 8
S JavaFX Unterschiede zwischen Scene Builder 2.0 und der ausgeführten App AWT, Swing, JavaFX & SWT 17
Informatiknoob AWT Zahlenraten (eine Zahl zwischen 1 und 10) AWT, Swing, JavaFX & SWT 1
ralfb1105 JavaFX Daten zwischen Controllern austauschen- neue Frage AWT, Swing, JavaFX & SWT 7
ralfb1105 JavaFX Daten zwischen Controller "austauschen" AWT, Swing, JavaFX & SWT 65
L Wörter zwischen zwei Grenzen einlesen. AWT, Swing, JavaFX & SWT 13
P Zwischen verschiedenen Panels wechseln AWT, Swing, JavaFX & SWT 3
M Schnittpunkte zwischen zwei Graphics2D Elemente ermitteln. AWT, Swing, JavaFX & SWT 5
O Focus zwischen Chat und Spiel wechselns AWT, Swing, JavaFX & SWT 3
Z Swing Drag&Drop zwischen JTable und JTree AWT, Swing, JavaFX & SWT 4
Arif AWT Unterschied zwischen RED und red AWT, Swing, JavaFX & SWT 4
D Swing Kommunikation zwischen zwei GUI's AWT, Swing, JavaFX & SWT 2
L JavaFX Verbindung zwischen Beschreibung und Listener (Codebehind Klasse) AWT, Swing, JavaFX & SWT 4
D Zwischen Null-Layouts wechseln AWT, Swing, JavaFX & SWT 2
K Wie kann ich eine Variable zwischen Tab Klassen weitergeben ? AWT, Swing, JavaFX & SWT 7
S JavaFX (Best Practise) Daten zwischen Controllern austauschen AWT, Swing, JavaFX & SWT 1
P 2D-Grafik Bogen(Arc) zwischen zwei Punkten zeichnen AWT, Swing, JavaFX & SWT 2
P Drag & Drop zwischen Panels AWT, Swing, JavaFX & SWT 0
N Swing CardLayout: Problem beim Wechsel zwischen den JPanels AWT, Swing, JavaFX & SWT 3
B Vertikale Größenänderung zwischen zwei Widgets AWT, Swing, JavaFX & SWT 2
T Swing Kompatibilitätsproblem zwischen Swing und JavaFX AWT, Swing, JavaFX & SWT 4
S Verzögerung zwischen Cursorbewegung einbauen AWT, Swing, JavaFX & SWT 1
3 Swing Vertikaler Separator zwischen JMenu's AWT, Swing, JavaFX & SWT 2
D JGridLayout zwischen Zeilen bestimmter Abstand AWT, Swing, JavaFX & SWT 3
S Unterschied zwischen id und fx:id AWT, Swing, JavaFX & SWT 5
B Datenübergabe zwischen Tabs und Daten speichern AWT, Swing, JavaFX & SWT 2
B Kommunikation zwischen zwei Fenstern und vorübergehende Speicherung der Eingaben AWT, Swing, JavaFX & SWT 4
B Linie zwischen 2 Elementen AWT, Swing, JavaFX & SWT 5
D animierte kameraansicht zwischen gezeichneten objekten AWT, Swing, JavaFX & SWT 4
B Swing JMenu zwischen anderen Componenten AWT, Swing, JavaFX & SWT 4
F Swing Ladebildschirm zwischen zwei SWING Frames AWT, Swing, JavaFX & SWT 11
T JTabbedPane - neuen Tab zwischen zwei anderen Tabs hinzufügen AWT, Swing, JavaFX & SWT 2
GUI-Programmer JWindow zwischen den Desktopbild und Dektopverknüpfungen AWT, Swing, JavaFX & SWT 16
Psypsy Swing SwingWorker unterschied zwischen setProgress und process AWT, Swing, JavaFX & SWT 2
propra Schnittpunkt zwischen Objekt und Kante finden AWT, Swing, JavaFX & SWT 24
H Swing Wechsel zwischen Frames AWT, Swing, JavaFX & SWT 6
S Swing Zwischenräume zwischen JPanels AWT, Swing, JavaFX & SWT 4
A Daten umherschieben zwischen zwei Klassen AWT, Swing, JavaFX & SWT 40
X zwischen 2 JPanels "elegant" wechseln AWT, Swing, JavaFX & SWT 3
B LayoutManager Positionierung zwischen zwei Layoutkomponenten AWT, Swing, JavaFX & SWT 2
N Swing DnD zwischen zwei JTrees AWT, Swing, JavaFX & SWT 2
G Unterschiedliche Pfadangabe zu Icons zwischen JApplet und JWindow? AWT, Swing, JavaFX & SWT 2
D JTabel: Überschrift, Abstand zwischen Tabellen, Spalten-Farbe ändern AWT, Swing, JavaFX & SWT 2
G Swing MigLayout: Lücken zwischen Elementen entfernen AWT, Swing, JavaFX & SWT 2
F Variablen zwischen Frames AWT, Swing, JavaFX & SWT 5
V Swing JLabel zwischen 2 JPanel hin- und herbewegen. AWT, Swing, JavaFX & SWT 12
E Drag&Drop zwischen 2 Listen AWT, Swing, JavaFX & SWT 5
M SWT DND zwischen zwei TreViewern in beide Richtungen AWT, Swing, JavaFX & SWT 10
buntuswalus Swing Datentransfer zwischen JPanels AWT, Swing, JavaFX & SWT 18
P Swing Beziehungen zwischen 3 Klassen AWT, Swing, JavaFX & SWT 4
R Swing Kommunikation zwischen Panels AWT, Swing, JavaFX & SWT 2
S Schnittstelle zwischen Haupt und Nebenfenster AWT, Swing, JavaFX & SWT 17
algorismi Unterscheiden zwischen zwei JLists AWT, Swing, JavaFX & SWT 5
F JCombobox zwischen setEditable true und false switchen AWT, Swing, JavaFX & SWT 2
I Swing JPanel Tab zwischen GUI Elementen AWT, Swing, JavaFX & SWT 6
L Swing Kommunikation zwischen JMenuBar und anderen Componenten AWT, Swing, JavaFX & SWT 2
data89 Verbindungslinien zwischen Formen auf einer "Zeichenfläche" AWT, Swing, JavaFX & SWT 2
DeeDee0815 SWT Text Widget: Zwischen Single und Password umschalten AWT, Swing, JavaFX & SWT 3
J Unterschied zwischen SwingWorker und Threads AWT, Swing, JavaFX & SWT 4
G Variblenwert zwischen zwei Klassen übergeben AWT, Swing, JavaFX & SWT 3
G Gap zwischen JButton-Rand und JButton-Icon verändern AWT, Swing, JavaFX & SWT 2
T Kommunikation zwischen Zwei GUI-Klassen AWT, Swing, JavaFX & SWT 2
T Kommunikation zwischen zwei jFrames AWT, Swing, JavaFX & SWT 4
T GridLayout, zu wenig Platz zwischen Widgets AWT, Swing, JavaFX & SWT 3
S Abstand zwischen Labeln auf 0 setzen AWT, Swing, JavaFX & SWT 6
J Unterschied zwischen nicht-statischen und statischen Klassen AWT, Swing, JavaFX & SWT 5
G Datenaustausch zwischen zwei JFrames AWT, Swing, JavaFX & SWT 3
T JTextField, der nur Werte zwischen 100 und 1000 zulässt AWT, Swing, JavaFX & SWT 28
M Linie zwischen JComponents AWT, Swing, JavaFX & SWT 5
G Abstand zwischen den Buttons in einer Toolbar AWT, Swing, JavaFX & SWT 3
G Drag&Drop zwischen JTables AWT, Swing, JavaFX & SWT 2
P Unterscheiden zwischen Mautasten-Druck? AWT, Swing, JavaFX & SWT 3
B Abstand zwischen einzelnen Elementen einstellen AWT, Swing, JavaFX & SWT 2
I Drag and Drop zwischen zwei JTables AWT, Swing, JavaFX & SWT 5
N JTable Abstand zwischen einzelnen Spalten AWT, Swing, JavaFX & SWT 6
K JFreeChart: Platz zwischen Balken AWT, Swing, JavaFX & SWT 3
G Zwischen Panels in einem JFrame wechseln AWT, Swing, JavaFX & SWT 4
M Unterschied zwischen paintComponent() und paint()? AWT, Swing, JavaFX & SWT 4
F Wie gebe ich Parameter zwischen Actions weiter? AWT, Swing, JavaFX & SWT 2
K abstände zwischen Panels? AWT, Swing, JavaFX & SWT 3
M Freiraum zwischen Knoten im JTree AWT, Swing, JavaFX & SWT 14
M Parameterübergabe zwischen Frames AWT, Swing, JavaFX & SWT 2
P in JFrame zwischen verschiedenen JPanels wechseln AWT, Swing, JavaFX & SWT 7
M Breite veraendern zwischen 2 JPanels AWT, Swing, JavaFX & SWT 2
J Separator zwischen den einzelnen Symbolen in der Toolbar AWT, Swing, JavaFX & SWT 4
A Button zwischen zwei Panels verschieben. AWT, Swing, JavaFX & SWT 6
G abstand zwischen den buttons unterschiedlich AWT, Swing, JavaFX & SWT 2
S Wechsel zwischen JFrame und JDialog durch Benutzerauswahl AWT, Swing, JavaFX & SWT 2
Z komponenten "einfrieren" - abstand zwischen AWT, Swing, JavaFX & SWT 10
G Ungewollter Abstand zwischen Gui -Elementen / Insets setzen AWT, Swing, JavaFX & SWT 2
G BoxLayout: Abstand zwischen vertikalen Komponenten! AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben