in actionPerformed() Koordinaten ändern

julius92

Mitglied
Hallo, ich will mit dem Programm ChoiceRadio eine Ereignisverarbeitung realsieren, welche dafür sorgt, dass bei Anwahl eines Radiobuttons das Oval an der entsprechenden Position (links oben, rechts oben,
usw.) im rechten Bereich angezeigt wird.

Leider schaffe ich es nicht die Koordinaten in der actionPerformed()-Methode zu ändern, sodass der grüne Punkt in eine andere Ecke "springt".

Hat jmd ne Idee?

Java:
import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

public class ChoiceRadio extends JApplet implements ActionListener {
	MyCan can = new MyCan();
	
	JRadioButton lo, ro, lu, ru;
	int width = 50;
	int heigth = 50;

	int positionX;
	int positionY;

	

	public int getPositionX() {
		return positionX;
	}

	public void setPositionX(int positionX) {
		this.positionX = positionX;
	}

	public int getPositionY() {
		return positionY;
	}

	public void setPositionY(int positionY) {
		this.positionY = positionY;
	}

	JPanel pane = new JPanel();
	JPanel pan1 = new JPanel();

	public void init() {
		pane.setLayout(new GridLayout(1, 2, 10, 10));
		pan1.setLayout(new GridLayout(4, 2, 20, 20));
		ButtonGroup bg = new ButtonGroup();

		lo = new JRadioButton("links oben", true);
		ro = new JRadioButton("rechts oben", false);
		lu = new JRadioButton("links unten", false);
		ru = new JRadioButton("rechts unten", false);

		bg.add(lo);
		bg.add(ro);
		bg.add(lu);
		bg.add(ru);

		pan1.add(lo);
		pan1.add(ro);
		pan1.add(lu);
		pan1.add(ru);

		lo.addActionListener(this);
		ro.addActionListener(this);
		lu.addActionListener(this);
		ru.addActionListener(this);

		pane.add(pan1);
		pane.add(can);
		setContentPane(pane);
	}

	public class MyCan extends Canvas {
		public void paint(Graphics g) {
			super.paint(g);
			g.setColor(Color.green);
			g.fillOval(getPositionX(), getPositionY(), width, heigth);

		}

	}

	public void actionPerformed(ActionEvent evt) {
		Object source = evt.getSource();
		if (source == ro) {
			setPositionX(50);
			setPositionY(0);

		} else if (source == lo) {
			setPositionX(0);
			setPositionY(0);

		} else if (source == lu) {
			setPositionX(0);
			setPositionY(100);

		} else
			setPositionX(50);
		setPositionY(100);
		repaint();

	}
}
 
Zuletzt bearbeitet:

Gucky

Top Contributor
Was meinst du mit, du schaffst es nicht? Denke bitte immer an eine vollständige Fehlerbeschreibung.
Was passiert stattdessen?
Was hast du schon versucht?
Was genau soll passieren? (schon beantwortet)

Ich denke das Problem liegt darin, dass du beim letzten else die Klammern vergessen hast.
 

julius92

Mitglied
Was meinst du mit, du schaffst es nicht? Denke bitte immer an eine vollständige Fehlerbeschreibung.
Was passiert stattdessen?
Was hast du schon versucht?
Was genau soll passieren? (schon beantwortet)

Ich denke das Problem liegt darin, dass du beim letzten else die Klammern vergessen hast.

Es passiert eigentlich nichts. Der grüne Punkte ist zwar da, nimmt aber irgendwelche (denke ich) default-Koordinaten an und ändert seine Position nie, wenn man den RadioButton wechselt.

Versucht habe ich einiges. Z.B. über Graphics g. Ich denke aber über die x und y Variablen ist es am sinnvollsten.
 

njans

Top Contributor
Der letzte Teil in deiner actionPerformed
Java:
else
            setPositionX(50);
        setPositionY(100);
        repaint();

Das else bezieht sich nur auf das setPositionX(50);
Daher wir IMMER setPositionY(100) aufgerufen. Du überschreibst da deine alte Position.

So läuft es einwandfrei:
Java:
public void actionPerformed(ActionEvent evt)
	{
		Object source = evt.getSource();
		if (source == ro)
		{
			setPositionX(50);
			setPositionY(0);

		}
		else if (source == lo)
		{
			setPositionX(0);
			setPositionY(0);

		}
		else if (source == lu)
		{
			setPositionX(0);
			setPositionY(100);

		}
		else
		{
			setPositionX(50);
			setPositionY(100);
		}
		can.repaint();
	}
 
Zuletzt bearbeitet:

Androbin

Bekanntes Mitglied
njans hat gesagt.:
...

So läuft es einwandfrei:
Java:
public void actionPerformed(ActionEvent evt)
	{
		Object source = evt.getSource();
		if (source == ro)
		{
			setPositionX(50);
			setPositionY(0);

		}
		else if (source == lo)
		{
			setPositionX(0);
			setPositionY(0);

		}
		else if (source == lu)
		{
			setPositionX(0);
			setPositionY(100);

		}
		else
		{
			setPositionX(50);
			setPositionY(100);
		}
		can.repaint();
	}
wäre ein switch nicht besser geeignet (Performance) ???
Und ja, ich weiß, dass man einen switch nicht an einem Object anwenden kann,
aber man kann es an einem String ( toString() ) anwenden !!!
 

Gucky

Top Contributor
Dann hättest du das Problem, dass du dein Objekt in einen String umwandeln musst. Von dem String muss noch .equals(Object) aufgerufen werden. Da ist, denke ich mal, eineelse if Reihe besser geeignet ;)
 

Gucky

Top Contributor
Irgendwie muss der switch case die Eingabe mit dem angegebenen "Case String" vergleichen. Ich weiß es nicht aber das wäre die einzige Möglichkeit, die mir einfiele, wie der switch case das bewerkstelligt.
 

turtle

Top Contributor
Besonders objekt-orientiert ist dein Programm nicht, aber nun ja...

Daher kommen mir switch-Anweisungen etwas suspekt vor und sollten durch polymorphe Aufrufe ersetzt werden. Aber da du eine actionperformed für alle JRadioButtons hast...

Das habe ich zwar nicht gemacht, aber zumindest die Aufrufe durch den Aufruf EINER Methode ersetzt.

Java:
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javafx.scene.control.RadioButton;

import javax.swing.ButtonGroup;
import javax.swing.JApplet;
import javax.swing.JPanel;
import javax.swing.JRadioButton;

public class ChoiceRadio extends JApplet implements ActionListener {
	MyCan can = new MyCan();

	JRadioButton lo, ro, lu, ru;
	int width = 50;
	int heigth = 50;

	int positionX;
	int positionY;

	public int getPositionX() {
		return positionX;
	}

	public void setPositionX(int positionX) {
		this.positionX = positionX;
	}

	public int getPositionY() {
		return positionY;
	}

	public void setPositionY(int positionY) {
		this.positionY = positionY;
	}

	JPanel pane = new JPanel();
	JPanel pan1 = new JPanel();

	public void init() {
		pane.setLayout(new GridLayout(1, 2, 10, 10));
		pan1.setLayout(new GridLayout(4, 2, 20, 20));
		ButtonGroup bg = new ButtonGroup();

		lo = new JRadioButton("links oben", true);
		ro = new JRadioButton("rechts oben", false);
		lu = new JRadioButton("links unten", false);
		ru = new JRadioButton("rechts unten", false);

		bg.add(lo);
		bg.add(ro);
		bg.add(lu);
		bg.add(ru);

		pan1.add(lo);
		pan1.add(ro);
		pan1.add(lu);
		pan1.add(ru);

		lo.addActionListener(this);
		ro.addActionListener(this);
		lu.addActionListener(this);
		ru.addActionListener(this);

		pane.add(pan1);
		pane.add(can);
		setContentPane(pane);
	}

	public class MyCan extends Canvas {
		public void paint(Graphics g) {
			super.paint(g);
			g.setColor(Color.green);
			g.fillOval(getPositionX(), getPositionY(), width, heigth);

		}

		public void change(int x, int y) {
			positionX = x;
			positionY = y;
			repaint();
		}

	}

	public void actionPerformed(ActionEvent evt) {
		JRadioButton source = (JRadioButton) evt.getSource();
		if (source == ro) {
			ChoiceRadio.this.change(50, 0);
		} else if (source == lo) {
			ChoiceRadio.this.change(0, 0);

		} else if (source == lu) {
			ChoiceRadio.this.change(0, 100);

		} else {
			ChoiceRadio.this.change(50, 100);
		}

	}

	private void change(int x, int y) {
		can.change(x, y);
	}
}
 

turtle

Top Contributor
So, hab es jetzt noch mal geändert und nun kein if oder switch mehr

Java:
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ButtonGroup;
import javax.swing.JApplet;
import javax.swing.JPanel;
import javax.swing.JRadioButton;

public class ChoiceRadio extends JApplet {
	class MyActionListener implements ActionListener {
		private MyCan can;
		private int x;
		private int y;

		public MyActionListener(MyCan can, int x, int y) {
			this.can = can;
			this.x = x;
			this.y = y;
		}

		@Override
		public void actionPerformed(ActionEvent e) {
			can.change(x, y);
		}

	}

	MyCan can = new MyCan();

	JRadioButton lo, ro, lu, ru;
	int width = 50;
	int heigth = 50;

	int positionX;
	int positionY;

	public int getPositionX() {
		return positionX;
	}

	public void setPositionX(int positionX) {
		this.positionX = positionX;
	}

	public int getPositionY() {
		return positionY;
	}

	public void setPositionY(int positionY) {
		this.positionY = positionY;
	}

	JPanel pane = new JPanel();
	JPanel pan1 = new JPanel();

	public void init() {
		pane.setLayout(new GridLayout(1, 2, 10, 10));
		pan1.setLayout(new GridLayout(4, 2, 20, 20));
		ButtonGroup bg = new ButtonGroup();

		lo = new JRadioButton("links oben", true);
		lo.addActionListener(new MyActionListener(can, 0, 0));
		ro = new JRadioButton("rechts oben", false);
		ro.addActionListener(new MyActionListener(can, 50, 0));
		lu = new JRadioButton("links unten", false);
		lu.addActionListener(new MyActionListener(can, 0, 100));
		ru = new JRadioButton("rechts unten", false);
		ru.addActionListener(new MyActionListener(can, 50, 100));

		bg.add(lo);
		bg.add(ro);
		bg.add(lu);
		bg.add(ru);

		pan1.add(lo);
		pan1.add(ro);
		pan1.add(lu);
		pan1.add(ru);

		pane.add(pan1);
		pane.add(can);
		setContentPane(pane);
	}

	public class MyCan extends Canvas {
		public void paint(Graphics g) {
			super.paint(g);
			g.setColor(Color.green);
			g.fillOval(getPositionX(), getPositionY(), width, heigth);

		}

		public void change(int x, int y) {
			positionX = x;
			positionY = y;
			repaint();
		}

	}
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J actionperformed wird nicht aufgerufen/ repaint() AWT, Swing, JavaFX & SWT 6
G lastFocusedComponent in ActionPerformed AWT, Swing, JavaFX & SWT 4
B AWT actionPerformed Method funktioniert nicht AWT, Swing, JavaFX & SWT 12
K Event Handling Mit ActionPerformed und java.io arbeiten AWT, Swing, JavaFX & SWT 3
Q AWT Methodenaufruf aus actionPerformed-Methode AWT, Swing, JavaFX & SWT 4
L ActionPerformed Variable übergeben AWT, Swing, JavaFX & SWT 3
C actionPerformed mit mehren Aktionen AWT, Swing, JavaFX & SWT 3
C Actionperformed funktioniert nicht AWT, Swing, JavaFX & SWT 13
H actionPerformed aufteilen AWT, Swing, JavaFX & SWT 12
G if-bedinung in actionperformed AWT, Swing, JavaFX & SWT 4
P Swing actionPerformed()-Methode funktioniert nicht AWT, Swing, JavaFX & SWT 3
S AWT Java actionPerformed "Ok" Button AWT, Swing, JavaFX & SWT 4
V Labeltext ändert sich nicht in actionPerformed AWT, Swing, JavaFX & SWT 5
M actionPerformed() wird zu oft aufgerufen AWT, Swing, JavaFX & SWT 10
M Arbeiten mit actionPerformed(ActionEvent) oder Alternative AWT, Swing, JavaFX & SWT 7
M Swing Anfängerfrage: ActionPerformed AWT, Swing, JavaFX & SWT 3
B Swing NullPointerException bei actionPerformed() AWT, Swing, JavaFX & SWT 2
B actionPerformed Problem AWT, Swing, JavaFX & SWT 3
D JTree DefaultMutableTreeNode ActionPerformed AWT, Swing, JavaFX & SWT 3
J Aus ActionPerformed ein Plugin starten AWT, Swing, JavaFX & SWT 4
R paintComponent direkt bei actionPerformed aufrufen AWT, Swing, JavaFX & SWT 2
S ActionPerformed Fehler... AWT, Swing, JavaFX & SWT 9
O Button (ActionPerformed) soll neues JFrame erzeugen AWT, Swing, JavaFX & SWT 8
J Action before actionPerformed! AWT, Swing, JavaFX & SWT 4
E ActionListener/actionPerformed() feuert nicht AWT, Swing, JavaFX & SWT 2
E AWT Implementierung einer Anweisung in Methode ActionPerformed AWT, Swing, JavaFX & SWT 2
B Komisches Problem mit actionPerformed() AWT, Swing, JavaFX & SWT 2
K Swing: 2 Buttons und actionPerformed AWT, Swing, JavaFX & SWT 4
B actionPerformed reagiert nicht auf das Canvas-objekt AWT, Swing, JavaFX & SWT 11
B Objekt in "actionPerformed" erzeugen und nutzen AWT, Swing, JavaFX & SWT 3
F actionPerformed und static? AWT, Swing, JavaFX & SWT 20
B Exceptions in actionPerformed() weiterleiten AWT, Swing, JavaFX & SWT 9
S Variablenübergabe bei actionPerformed funktioniet nicht? AWT, Swing, JavaFX & SWT 12
X actionPerformed in einer Klasse Buttons AWT, Swing, JavaFX & SWT 2
T public void actionPerformed(...) ist statisch?? AWT, Swing, JavaFX & SWT 6
C Polygon Koordinaten richtig sortieren AWT, Swing, JavaFX & SWT 7
C Kleineres Bild an bestimmte Koordinaten setzen AWT, Swing, JavaFX & SWT 6
S JButtons an Koordinaten setzen AWT, Swing, JavaFX & SWT 3
J Java FX Koordinaten NACH Animation setzen, wie? AWT, Swing, JavaFX & SWT 9
F Swing Rotation eines Bildes mit beliebigen Koordinaten um den Mittelpunkt AWT, Swing, JavaFX & SWT 3
B Transformation und Darstellung von Koordinaten AWT, Swing, JavaFX & SWT 5
P JavaFX Szenegraph - Koordinaten von Children einer Group AWT, Swing, JavaFX & SWT 0
C Bild Koordinaten AWT, Swing, JavaFX & SWT 6
S Polygon mit double-Koordinaten AWT, Swing, JavaFX & SWT 2
K 3D-Grafik 2 "Boxen" auf unterschiedlichen Koordinaten AWT, Swing, JavaFX & SWT 2
Luk10 Fragen zum Koordinaten System AWT, Swing, JavaFX & SWT 3
K LayoutManager Buttons auf bestimmte x und y Koordinaten AWT, Swing, JavaFX & SWT 2
W 2D-Grafik Koordinaten nicht immer die selben AWT, Swing, JavaFX & SWT 9
J Koordinaten von JButton AWT, Swing, JavaFX & SWT 2
C Caret Position mit X-Y-Koordinaten ermitteln AWT, Swing, JavaFX & SWT 2
D Swing JTable, Zellen-Farbe über Koordinaten ändern AWT, Swing, JavaFX & SWT 9
Y AWT Maus Koordinaten abspeichern in eine Textfile AWT, Swing, JavaFX & SWT 3
D Swing JViewPort, Absolut Koordinaten berechnen. AWT, Swing, JavaFX & SWT 2
C permanente aktualisierung der Koordinaten der Maus auf einem Panel AWT, Swing, JavaFX & SWT 8
T SWT Canvas Koordinaten per MouseMove auslesen AWT, Swing, JavaFX & SWT 1
S Koordinaten aus Array verwenden zum zeichnen auf JPanel?! AWT, Swing, JavaFX & SWT 3
S Swing Text -> HTML: Caret-Koordinaten verschoben AWT, Swing, JavaFX & SWT 6
aze SwingConstants.Center Koordinaten für JLabel herausfinden AWT, Swing, JavaFX & SWT 6
T Choice "gezielt" darstellen aber wie - mit Koordinaten aber wie? AWT, Swing, JavaFX & SWT 6
D Koordinaten von einem Kreissegment berechnen AWT, Swing, JavaFX & SWT 6
D Mouse Koordinaten AWT, Swing, JavaFX & SWT 2
R drawString mit double Koordinaten AWT, Swing, JavaFX & SWT 5
M Grafik flexibel an berechneten Koordinaten positionieren AWT, Swing, JavaFX & SWT 4
N Alle Pixel-Koordinaten von z.B. g.drawLine(.) speichern AWT, Swing, JavaFX & SWT 7
N Koordinaten erfassen AWT, Swing, JavaFX & SWT 5
S Koordinaten/Raster (ähnlich Schachbrett) anzeigen/ausblenden AWT, Swing, JavaFX & SWT 10
F Ermittlung der X- und Y- Koordinaten im Tree bei Tastaturst. AWT, Swing, JavaFX & SWT 5
D Koordinaten der Bildschirmposition auslesen (MouseListener?) AWT, Swing, JavaFX & SWT 7
H Swing Componente zur Läufzeit ändern AWT, Swing, JavaFX & SWT 3
H JDialog in Größe ändern - Resize-Cursor bleibt betreten der Komponente AWT, Swing, JavaFX & SWT 1
H AWT Dialog Größe ändern - Schwarzer Inhalt beim groß ziehen AWT, Swing, JavaFX & SWT 1
_user_q ChoiceBox Elemente: Sprache ändern AWT, Swing, JavaFX & SWT 7
raeuchertofu Text von JTextfield und JLabel ändern AWT, Swing, JavaFX & SWT 2
B Deckraft ändern AWT, Swing, JavaFX & SWT 1
Davee JavaFX ListView = null wenn ich sie in Laufzeit ändern will! AWT, Swing, JavaFX & SWT 16
missy72 JavaFX RowFactory Schriftfarbe ändern AWT, Swing, JavaFX & SWT 6
T Swing JTable cellRenderer mit jpg Hintergrundfarbe lässt sich nicht ändern. AWT, Swing, JavaFX & SWT 1
N Bilder auf Button einfügen und mehrmals ändern (ein Button, mehrere ActionListener) AWT, Swing, JavaFX & SWT 2
Hatsi09 GUI Input Farbe ändern AWT, Swing, JavaFX & SWT 0
W JavaFX CSS ändern wirft NPE AWT, Swing, JavaFX & SWT 8
E Keystroke für Ausschneiden läßt sich nicht ändern AWT, Swing, JavaFX & SWT 2
L Swing Button Farbe ändern/wechseln AWT, Swing, JavaFX & SWT 2
B JavaFX Farbe eines Quadrates in einer separaten Klasse ändern AWT, Swing, JavaFX & SWT 4
sascha-sphw JavaFX ListCell höhe verändert sich beim ändern der Text-Farbe AWT, Swing, JavaFX & SWT 14
L Swing JLabel wird beim ändern der Schriftart immer neu gezeichnet. AWT, Swing, JavaFX & SWT 2
R Swing JTextField - Schriftgröße je nach Länge und Größe ändern AWT, Swing, JavaFX & SWT 0
OSchriever Layout über Radiobuttons ändern AWT, Swing, JavaFX & SWT 4
S Swing JLabel Text mit der Zeit ändern AWT, Swing, JavaFX & SWT 1
S JavaFX ListView Inhalte während Laufzeit ändern AWT, Swing, JavaFX & SWT 23
Shallty JavaFX MenuItem (Info) Icon ändern AWT, Swing, JavaFX & SWT 7
J Schriftart über einen Button ändern AWT, Swing, JavaFX & SWT 1
J JButton zum ändern Der Schriftart/Schriftgröße AWT, Swing, JavaFX & SWT 2
C Bilder so einbinden, dass sie sich ändern AWT, Swing, JavaFX & SWT 6
S JavaFX Boolean ändern Table View AWT, Swing, JavaFX & SWT 14
K Swing Text eines Lables in einer Methode ändern AWT, Swing, JavaFX & SWT 13
L JavaFX TableView kein content text ändern AWT, Swing, JavaFX & SWT 2
I Java Bildfarbe ändern wie bei Photoshop AWT, Swing, JavaFX & SWT 9
cool_brivk24 Swing Button Farbe ändern AWT, Swing, JavaFX & SWT 2
B Observer Pattern JLabel ändern AWT, Swing, JavaFX & SWT 7
K JavaFX TextInputDialog Button Text ändern AWT, Swing, JavaFX & SWT 1

Ähnliche Java Themen

Neue Themen


Oben