JButtons verschieben

Masterman431

Mitglied
Hallo Community!

Ich hab vor kurzem erst das Programmieren angefangen und hab ein kleines Problem, bei dem ich mir nicht zu helfen weis. Ich habe letztendlich ein JFrame mit Bildern, deren Koordinaten dauerhaft verschoben werden. Nun möchte ich ein JButton einbauen, der rechts neben den Bildern gezeichnet werden soll. Wenn ich den Button erstelle und mit .setBounds() oder .setLocation versuche die Position zu verändern wird er trotzdem oben in der Mitte dargestellt. In anderen Foren hab ich 2 Möglichkeiten gelesen. Zum einen das Layout auf null setzen, wovon aber kurz darauf wieder abgeraten wird. Habs trotzdem probiert, aber die Bilder waren weg und es war nur noch ein graues Fenster zu sehen. Die zweite Möglichkeit war ein "Layoutmanager". Darunter kann ich mir jedoch nichts vorstellen. Gibt es ne Möglichkeit das JFrame so einzustellen, dass ich Buttons beliebig playtzieren kann, aber meine Bilder noch dargestellt weren?

Ich hoffe ihr konntet mein Problem verstehen und schon mal Danke im Vorraus für Antworten^^
 

ssoul26

Bekanntes Mitglied
Du setzt setzt den LayoutManager auf null -> .setLayoutManager(null) und platzierst deine Elemente nachdem du .setBounds(...) auf sie ausgeführt hast.
 

Masterman431

Mitglied
Danke erstmal für die Antwort.
Eclipse sagt bei mir, dass die Methode .setLayout() sein müsste. Vor den Punkt muss doch der Name des JFrames, oder? Wenn ich vor den Punkt den Namen des JButtons schreibe, wird er garnicht gemalt.
 

MrClave

Bekanntes Mitglied
Java:
frame.setLayoutManager(null();

Cooler Aufruf, hab ich auch noch nicht gesehen ;)


Ich verstehe dein Problem ehrlich gesagt nicht ganz.
Aber so grob geraten, könntest du jeweils ein Bild und ein Button in ein Panel verfrachten, sodass, wenn du das Panel bewegst, sich sowohl das Bild, als auch der Button gleich mitbewegen.


Wenn du nur ein Button für alle Bilder willst, könntest du sowas basteln.
gac7giv6.png

Ansonsten könntest du mal ein Bild zeigen, wie du es gerne haben möchtest.
 

Machareder

Bekanntes Mitglied
hmmm ja hab ich mich wohl oder übel verschrieben ;)
kommt wohl davon wenn man, sein geschriebenes nicht mehr durchließt.
 
Zuletzt bearbeitet:

Masterman431

Mitglied
Erstmal wieder Danke für die Antworten^^

Um auf den Beitrag von Machareder zu kommen:
Ich hab diese Zeile eigefügt, jedoch wird der Button immernoch oben, in der Mitte des JFrames gezeichnet.

Sowas wie bei MrClave hab ich mir vorgestellt. Nach einem Youtube Tutorial hatte ich folgenden Quelltext:
Java:
public void fenster(){
        JFrame fenster = new JFrame("Spiel");
	    fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	    fenster.setSize(600,1000);
	    fenster.setVisible(true);
	    fenster.setLocationRelativeTo(null);
	    JButton button1 = new JButton("menü");
	    JButton button2 = new JButton("Spiel beenden");
	    JButton button3 = new JButton("Auto wechseln");
	    
	    fenster.add(button1, BorderLayout.EAST);
	    fenster.add(button2, BorderLayout.EAST);
	    fenster.add(button3, BorderLayout.EAST);
	    
	    fenster.add(new gui().CENTER);

Dabei traten jedoch neue Probleme auf. Zum einen wird nur einer der 3 Buttons dargestellt. Ich vermute, dass alle 3 übereinander gezeichnet werden und dass man die Buttons als liste anordnen muss, aber wie wir dass praktisch umgestzt?
Zum anderen beinhaltete die Klasse gui eine private Klasse Actionlistener. Dieser funktioniert auch nicht mehr. Wenn ich die Buttons wieder entferne funktioniert der Actionlistener wieder.

Würde mich über erklärte Lösungen freuen :D
 
Zuletzt bearbeitet:

Machareder

Bekanntes Mitglied
soo.... hab was kleines geschrieben. Vorab du musst deine Bilder selbst skalieren, dass heißt die müssen schon die richtige größe besitzen sonst wird es nicht funktionieren :D (<-komm ich später noch darauf zurück).

Java:
JFrame frame = new JFrame();
erstellt eine neue gui
Java:
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
erstell ein JPanel, dieses kann man nach beliebigen irgendwo im frame platzieren und beliebig viele buttons, label, etc. adden

Java:
JButton button = new JButton("Nächstes Bild");
ein button
Java:
ImageIcon icon = new ImageIcon("Dein/Pfad/zum/Bild");
du gibst an wo dein bild liegt und lädst es damit
Java:
JLabel label = new JLabel(icon);
du erstellst ein label und lädst darin dein icon

jetzt kommen wir zum adden:
Java:
panel1.add(button);
panel2.add(label);

so:
jetzt nehmen wir zuerst panel1 her, dort setzten wir den Button nach East
Java:
frame.getContentPane().add(BorderLayout.EAST, panel1);
nun kommen wir zu dem Label wo dein Bild gespeichert ist und setzten es nach WEST:
Java:
frame.getContentPane().add(BorderLayout.WEST, panel2);
so nun nur noch das frame sichtbar, größe setzen(ich setzte auch so damit es nicht vergrößert verkleinert wird)
Java:
frame.setSize(400,400);
frame.setVisible(true);
frame.setResizable(false);

so frame.setSize(400,400) <- daran könnte es liegen das du deinen Button nicht siehst, wenn das bild größer ist als das frame. Follgende möglichkeiten:
1. du veränderst dein Bild in der .jpg-Datei
2. du nimmst den Befehl
Java:
label.setPreferredSize(new Dimension(200,200));
er wird dir aber nicht viel bringen, dass darfst du selbst herausfinden ;)
3. du setzt entweder das frame größer oder nimmst den Befehl
Java:
frame.setResizable(false);
raus und vergößerst/verkleinerst das frame von Hand :D

Viel Spaß beim Testen

PS: ich hab extra keinen actionListener hinzugefügt, dass musst du dann natürlich selber machen. Und noch ein Tipp, google mal nach den verschiedenen LayoutManager.

EDIT:
habe etwas verändert jetzt müsste es auch ohne verändern des bildes funktionieren (könnte aber passieren dass du dein Bild nicht komplett siehst)
 
Zuletzt bearbeitet:

Masterman431

Mitglied
Danke Machaeder für die Antwort!
Das mit den Buttons funktionier jetzt wunderbar, nur hab ich noch einige Fragen.

Zum einen hatte ich mehr als ein Bild, das bewegt wird, also wie bekomme ich mehrere icons in ein JLabel? Zudem, bewegen sich meine Bilder nicht mehr.
Ich hatte in der früheren Version eine Methode aufgerufen, die für das erstellen des Gui zuständig wahr.
Hier der Quelltext:
Java:
public void fenster(){
    JFrame fenster = new JFrame("Spiel");
    fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    fenster.setSize(600,1000);
    fenster.setVisible(true);
    fenster.setLocationRelativeTo(null);
    fenster.add(new gui());
    
   }

Wie man sieht, wurde nach dem Erstellen des JFrames der Konstruktor der Klasse gui zum JFrame hinzugefügt.

Der Konstruktor von gui war wie folgt:
Java:
public gui(){

		setFocusable(true);
		ImageIcon u = new ImageIcon(map_pfad);
		ImageIcon v = new ImageIcon(player_pfad);
		ImageIcon b = new ImageIcon(b_pfad);

		bkg = u.getImage();
		player = v.getImage();
		hud = b.getImage();

		addKeyListener(new AL());
		
		time = new Timer(5, this);
		time.start();
		
	}

es wurden die ImageIcons u, v und b erstellt. davon sind u und v bewegt. mit dem timer wird dann regelmäßig die Methode Paint aufgerufen:
Java:
public void paint (Graphics g){
		
		super.paint(g);
		Graphics2D f2 = (Graphics2D)g;
		
			f2.drawImage(bkg, 0, y_strasse, null);
			f2.drawImage(player, x_player, 775, null);
			f2.drawImage(hud, -2, -8, null);
	}

In der neuen Version, die mit Hilfe von Machaeder erstellt wurde, wird nur noch der Konstruktor von gui aufgerufen:
Java:
public void gui(){
		JFrame fenster = new JFrame();
	    JPanel panel1 = new JPanel();
	    JPanel panel2 = new JPanel();
	    JButton button1 = new JButton("menü");
	    
		ImageIcon u = new ImageIcon(map_pfad);
		ImageIcon v = new ImageIcon(player_pfad);
		ImageIcon b = new ImageIcon(b_pfad);
		
	    JLabel label = new JLabel(u);
	    
	    panel1.add(button1);
	    panel2.add(label);
	    
	    fenster.getContentPane().add(BorderLayout.EAST, panel1);
	    fenster.getContentPane().add(BorderLayout.CENTER, panel2);
	    
	    fenster.setSize(600,1000);
	    fenster.setVisible(true);
	    fenster.setResizable(false);
	    
	   

	setFocusable(true);
	bkg = u.getImage();
	player = v.getImage();
	hud = b.getImage();
	addKeyListener(new AL());
	
	time = new Timer(5, this);
	time.start();
	}

Es wird jetzt nur noch das ImageIcon u gezeichnet, da ich nicht weis, wie man mehrere Image Icons hinzufügt und bewegt wird dieses auch nicht mehr. Ist es villeicht garnicht möglich in einem JLabel die Methode Paint auszuführen/ brauch ich eine andere???

Ist viel Text, aber ich glaub es ist nötig, um mein Problem zu erkennen^^
 

Machareder

Bekanntes Mitglied
also ganz hab ich wahrscheinlich nicht verstanden ;)
für was is jetzt eigentlich der Button da? wenn du es so oder so nur mit der zeit verschiebst? Oder wird es per button klick erst aktiviert?
 

Machareder

Bekanntes Mitglied
ach verdammt... voll vergessen ;)

des ist jetzt auch nicht ausprobiert und alles :D

wir nehmen jetzt das Label her und setzen es erst u dann setzt du wait dann setzt du das label meinetwegen auf d -> wieder wait -> dann auf e und immer so weiter

<- ich bin mir aber auch nicht sicher ob es funktioniert :D
Schreib einfach ob so "geht" oder nicht ;)

Wenn nicht geb ich mir mal mehr mühe, um eine Lösung zu findne :D
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
CptK Bild beim betätigen eines JButtons Java Basics - Anfänger-Themen 6
T NullLayout und JButtons Java Basics - Anfänger-Themen 4
F Interface JButtons werden nicht angezeigt... Java Basics - Anfänger-Themen 5
S Jbuttons an Koordinaten Java Basics - Anfänger-Themen 33
J Problem bei Param.übergabe und dem erstellen von JButtons Java Basics - Anfänger-Themen 4
N JButtons vergleichen Java Basics - Anfänger-Themen 3
L Platz auf JButtons verändern Java Basics - Anfänger-Themen 18
D java jbuttons auf dem Hintergrundbild Java Basics - Anfänger-Themen 11
E JButtons auf JFrame nicht immer sichtbar Java Basics - Anfänger-Themen 4
Q Random Funktion JButtons Java Basics - Anfänger-Themen 6
X Probleme mit JButtons Java Basics - Anfänger-Themen 6
A JButtons dynamisch generieren mit verschiedenen actionhandlern Java Basics - Anfänger-Themen 6
D JTextField anstatt Jbuttons Java Basics - Anfänger-Themen 9
0 jButtons einen Int wert zuweisen MineSweaper Java Basics - Anfänger-Themen 3
P Wert eines JButtons Java Basics - Anfänger-Themen 6
R JButtons in eine Array legen GUI Java Basics - Anfänger-Themen 5
M JPanel, JButtons, Borderlayout Java Basics - Anfänger-Themen 8
M Dynamische JButtons mit ActionListener Java Basics - Anfänger-Themen 7
Z JButtons & Actionlistener Java Basics - Anfänger-Themen 5
W Variable anzahl an JButtons Java Basics - Anfänger-Themen 5
A Problem mit einem Array aus JButtons Java Basics - Anfänger-Themen 4
K unbestimmte Anzahl JButtons Java Basics - Anfänger-Themen 2
H JButtons anpassen Java Basics - Anfänger-Themen 3
G Text des JButtons? Java Basics - Anfänger-Themen 2
J JButtons mit GridBagLayout anordnen Java Basics - Anfänger-Themen 9
J Rand eines JButtons entfernen Java Basics - Anfänger-Themen 3
M umbennenen eines JButtons Java Basics - Anfänger-Themen 2
G JButtons mit Rand Java Basics - Anfänger-Themen 3
M JButtons werden nicht angezeigt Java Basics - Anfänger-Themen 13
B Größe von JButtons Java Basics - Anfänger-Themen 2
R Buttons können sich bewegen und JButtons nicht? Java Basics - Anfänger-Themen 5
V Problem mit JButtons und JTextField Java Basics - Anfänger-Themen 5
C ActionEvent bei JButtons Java Basics - Anfänger-Themen 2
S String Array Buchstaben um einen gewissen Wert verschieben Java Basics - Anfänger-Themen 4
U Ascii wert verschieben, wie möglich? Java Basics - Anfänger-Themen 3
J Verschieben von Buchstaben in einem String um vorgegebene Anzahl von Zeichen innerhalb eines weiteren String Java Basics - Anfänger-Themen 12
Elyt JFrame in den Hintergrund verschieben Java Basics - Anfänger-Themen 3
OSchriever JFrame-Anwendungsfenster verschieben Java Basics - Anfänger-Themen 17
S Input/Output JLabel verschieben Java Basics - Anfänger-Themen 7
L Files verschieben in einen Ordner Java Basics - Anfänger-Themen 87
L Array Elemente verschieben Java Basics - Anfänger-Themen 5
CptK Methoden JLabel erstellen & verschieben Java Basics - Anfänger-Themen 1
H Position verschieben der Elemtente im Array Java Basics - Anfänger-Themen 3
K Einzelne Email verschieben nicht möglich Java Basics - Anfänger-Themen 3
A Dateien Verschieben Java Basics - Anfänger-Themen 1
T Arrayposition um eine Position verschieben Java Basics - Anfänger-Themen 2
B Element in Array nach unten verschieben Java Basics - Anfänger-Themen 11
M Best Practice Verschieben einzelner Spalten eines JTables verhindern Java Basics - Anfänger-Themen 5
B Methoden Element aus einem Array löschen, Rest nach vorne verschieben? Java Basics - Anfänger-Themen 4
M Elemente eines Arrays verschieben Java Basics - Anfänger-Themen 9
K Element in ArrayList löschen ohne Index zu verschieben Java Basics - Anfänger-Themen 2
L Punkt innerhalb eines Bereiches verschieben Java Basics - Anfänger-Themen 9
H Kreis verschieben Java Basics - Anfänger-Themen 10
R Variablen [GELÖST]Elemente in Array um Schrittweite s verschieben Java Basics - Anfänger-Themen 2
J Java Array Zeichnung Skalieren und verschieben Java Basics - Anfänger-Themen 5
S Dateien mit Java verschieben Java Basics - Anfänger-Themen 6
llabusch Fenster per Button verschieben Java Basics - Anfänger-Themen 5
llabusch Fenster um x Pixel verschieben Java Basics - Anfänger-Themen 4
J Array um 1 stelle verschieben Java Basics - Anfänger-Themen 2
B Fehlerhafte XML-Files verschieben Java Basics - Anfänger-Themen 6
T Verschieben Java Basics - Anfänger-Themen 4
B Dateien Verschieben! Java Basics - Anfänger-Themen 8
B ältere Dateien verschieben Java Basics - Anfänger-Themen 3
Q Komma verschieben Java Basics - Anfänger-Themen 5
J Markierte Items in einer JLIST in einen Ordner verschieben Java Basics - Anfänger-Themen 2
W Elemente in einem Array nach 'oben' verschieben Java Basics - Anfänger-Themen 9
N Array inhalte verschieben Java Basics - Anfänger-Themen 12
B Methode in andere Klasse verschieben Java Basics - Anfänger-Themen 9
T JScrollPane: Slider programmgesteuert verschieben? Java Basics - Anfänger-Themen 4
GianaSisters Erste Schritte Datei umbennen bzw verschieben klappt nicht Java Basics - Anfänger-Themen 6
0 Datei verschieben Java Basics - Anfänger-Themen 6
R Verschieben eines Arrays aus Objekten Java Basics - Anfänger-Themen 16
eLogic Datei verschieben Java Basics - Anfänger-Themen 12
M Kommastellen verschieben Java Basics - Anfänger-Themen 4
R Objekt mit Maus auswählen und verschieben Java Basics - Anfänger-Themen 2
L Datei verschieben mit einer Schleife Java Basics - Anfänger-Themen 17
Hamstinator Fenster mit Maus verschieben Java Basics - Anfänger-Themen 2
K Elemente eines Array verschieben Java Basics - Anfänger-Themen 18
U Arry verschieben Java Basics - Anfänger-Themen 2
J Datentypen Array in x Richtungen verschieben Java Basics - Anfänger-Themen 6
E Probleme mit Images verschieben Java Basics - Anfänger-Themen 4
K Punkte verschieben Java Basics - Anfänger-Themen 6
S Grosse Dateien kopieren/Verschieben Java Basics - Anfänger-Themen 14
D denkfehler, bereich verschieben awt Java Basics - Anfänger-Themen 3
D Dateien umbenennen --> verschieben Java Basics - Anfänger-Themen 4
Mike90 verschieben von Buttons, ... Java Basics - Anfänger-Themen 18
D Elemente im Array verschieben Java Basics - Anfänger-Themen 15
M Referenzen verschieben Java Basics - Anfänger-Themen 2
B zahlen verschieben tabelle Java Basics - Anfänger-Themen 2
H Objekt mit Maus verschieben Java Basics - Anfänger-Themen 4
F Größe von Grafik-Containern verschieben Java Basics - Anfänger-Themen 2
J Datei verschieben funktioniert nicht Java Basics - Anfänger-Themen 6
M Verzeichnis verschieben Java Basics - Anfänger-Themen 5
G Ordner überprüfen und Dateien verschieben Java Basics - Anfänger-Themen 3
L Verzeichnisse mit Inhalt verschieben auf UNIX Java Basics - Anfänger-Themen 5
Silas89 Datei verschieben Java Basics - Anfänger-Themen 3
K bestimmte Dateien aus Ordner verschieben Java Basics - Anfänger-Themen 5
X Dateien Verschieben Java Basics - Anfänger-Themen 8
M JList Parameter verschieben Java Basics - Anfänger-Themen 3
M Parameter zwischen zwei JLists verschieben Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben