Graphics-Objekt aktualisiert sich nicht

myjday

Aktives Mitglied
Schönen guten Morgen,

ich bastle gerade mit einem Graphics-Objekt herum. Je nach dem was man in einer JComboBox auswählt sollen entweder 1, 2, .... oder 5 Kreise gezeichnet werden.
Bis auf das Aktualisieren klappt alles. Ich habe aber keine Idee, wie ich das JPanel, in dem die Kreise
gezeichnet werden, aktualisieren kann.

Hier der Code der Klasse Oberflaeche:

Java:
package kreise_zeichnen;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Oberflaeche extends JFrame{

	private JPanel pZeichnung;
	private JPanel pEingabe;
	private JLabel jlblAnzahlKreise;
	private JComboBox jcbb_anzahl;


	public static void main(String[] args) {

		Runnable startGui = new Runnable() {

			public void run() {

				Oberflaeche o = new Oberflaeche();
				o.setDefaultCloseOperation(Oberflaeche.EXIT_ON_CLOSE);


				o.pack();
				o.setLocationRelativeTo(null);
				// f.setResizable(false);
				o.setVisible(true);
			}

		};



		// SwingUtilities
		// EventQueue

		EventQueue.invokeLater(startGui);
	}

	public Oberflaeche(){

		super();
		this.setContentPane(getZeichenflaeche());
	}

	private JPanel getZeichenflaeche(){

		pZeichnung 	= new ZeichenPanel(5);
		pEingabe	= new JPanel();
		pEingabe.setLayout(new FlowLayout());

		jlblAnzahlKreise = new JLabel("Anzahl der Kreise: ");
		jlblAnzahlKreise.setPreferredSize(new Dimension(150,20));

		jcbb_anzahl = new JComboBox();

		jcbb_anzahl.setPreferredSize(new Dimension(150, 20));

		jcbb_anzahl.addItem("Bitte Anzahl wählen ...");
		jcbb_anzahl.addItem("1");
		jcbb_anzahl.addItem("2");
		jcbb_anzahl.addItem("3");
		jcbb_anzahl.addItem("4");
		jcbb_anzahl.addItem("5");

		jcbb_anzahl.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e) {

				JPanel p = new ZeichenPanel(jcbb_anzahl.getSelectedIndex());
			}
		});

		pEingabe.add(jlblAnzahlKreise);
		pEingabe.add(jcbb_anzahl);

		JPanel myPanel = new JPanel();
		myPanel.setLayout(new BorderLayout());

		myPanel.add(pEingabe, BorderLayout.WEST);
		myPanel.add(pZeichnung, BorderLayout.SOUTH);

		return myPanel;
	}
}

Das JPanel lasse ich in der Klasse ZeichenPanel zeichnen:

Java:
package kreise_zeichnen;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;

import javax.swing.JPanel;

public class ZeichenPanel extends JPanel{

		private int anzahl_kreise;

		public ZeichenPanel(){

			setPreferredSize(new Dimension(500,400));
			this.anzahl_kreise = 0;
		}

		public ZeichenPanel(int anzahl_kreise){

			this.anzahl_kreise = anzahl_kreise;
			setPreferredSize(new Dimension(420,400));
		}

		@Override
		protected void paintComponent(Graphics g) {
			// TODO Auto-generated method stub
			g.setColor(Color.DARK_GRAY);

			g = zeichneKreise(g);


		}



		public Graphics zeichneKreise(Graphics g){

			for(int i=0; i<anzahl_kreise; i++){

				// x will be distance between 2 circles
				int x = 80;

				// p_x, p_y will be startpoint for a new circle
				int p_x = 36;
				int p_y = 140;

				// Kreis zeichnen
				g.fillOval(p_x + x*i, p_y, 80, 80);

			}



			return g;
		}

		public int getAnzahl_kreise() {
			return anzahl_kreise;
		}

		public void setAnzahl_kreise(int anzahl_kreise) {
			this.anzahl_kreise = anzahl_kreise;
		}
}

Wie kann ich aus der Klasse Oberflaeche über das Objekt o eine Neuzeichnung aufrufen?

Vielen Dank & Gruß,
myjday
 
Zuletzt bearbeitet:
S

SlaterB

Gast
> JPanel p = new ZeichenPanel(jcbb_anzahl.getSelectedIndex());
bringt jedenfalls nix, dann müsstest du mühsam das alte JPanel aus der GUI entfernen und das neue an richtiger Position einfügen,

bleibe lieber bei nur einem ZeichenPanel,
an dem musst du die Methode setAnzahl_kreise() aufrufen,

dafür solltest du das Panel mit dem Typ ZeichenPanel speichern,
nicht
> private JPanel pZeichnung;

nach dem Neusetzen wahrscheinlich auch repaint() aufrufen

--------

mal als Ausblick:
noch geschickter wäre es, wenn das ZeichenPanel eine Referenz aus das Model der JComboBox hätte und dann in der
paint-Methode genau den aktuell selektierten Wert ausliest,
dann bräuchtest du keinen ActionListener an der JComboBox, außer vielleicht um repaint() aufzurufen
 

myjday

Aktives Mitglied
Hallo SlaterB,

vielen Dank für die Tipps. Ich werds ausprobieren.

Der Grund für die zwei Panels war der Folgende:

In dem einem will ich die Werte abfragen. Sollte das funktionieren was ich vorhabe werden noch mehr Werte abgefragt. Dafür FlowLayout.

In dem zweiten wollte ich rein nur zeichnen.

Mal schaun was draus wird.

Gruß & Danke,
myjday
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Graphics Objekt in Zeitschleife zeichnen AWT, Swing, JavaFX & SWT 4
V 2D-Grafik Frage zum Graphics Objekt AWT, Swing, JavaFX & SWT 2
Furtano AWT paint braucht ein Graphics Objekt ? AWT, Swing, JavaFX & SWT 2
L Graphics Objekt - aus anderer Klasse aufrufen / übergeben AWT, Swing, JavaFX & SWT 5
S Unterscheiden ob ein Graphics-Objekt von einer JComponent oder einem BufferedImage kommt..? AWT, Swing, JavaFX & SWT 4
K Graphics-Objekt zeichnet nicht alle Bilder AWT, Swing, JavaFX & SWT 3
N Graphics Objekt "puffern" AWT, Swing, JavaFX & SWT 7
R Graphics Objekt ändern AWT, Swing, JavaFX & SWT 11
R Selectable Graphics Objekt gesucht. AWT, Swing, JavaFX & SWT 5
Wildcard FontMetrics ohne Graphics-Objekt AWT, Swing, JavaFX & SWT 13
A Problem mit dem graphics-Objekt AWT, Swing, JavaFX & SWT 8
N Graphics Objekte scalen mit Veränderung des Bildschirms AWT, Swing, JavaFX & SWT 19
T Bild in ein graphics füllen AWT, Swing, JavaFX & SWT 2
volcanos Scrollen: JScrollPane mit Graphics g und Java-Fonts extends Frame ? AWT, Swing, JavaFX & SWT 5
DonBronson Java Graphics bewegbar machen (Drag&Drop) AWT, Swing, JavaFX & SWT 3
ExceptionOfExpectation MouseListener-Objekte zu den Graphics-Objekten einfügen AWT, Swing, JavaFX & SWT 3
R AWT Graphics initialisieren AWT, Swing, JavaFX & SWT 15
P JPanle, JFrame und Graphics AWT, Swing, JavaFX & SWT 2
R 2D-Grafik PNG Bild per Graphics auf JPanel AWT, Swing, JavaFX & SWT 9
B Graphics to Image AWT, Swing, JavaFX & SWT 3
T Swing Graphics auf Panel AWT, Swing, JavaFX & SWT 2
B Graphics -> Graphics2D etwas zu beachten? AWT, Swing, JavaFX & SWT 8
P ActionListener Graphics Einbauen AWT, Swing, JavaFX & SWT 0
J Swing Problem mit Graphics Methode AWT, Swing, JavaFX & SWT 4
R Swing Bewegung eines Graphics Objektes innerhalb eines JPanels funktioniert nicht richtig AWT, Swing, JavaFX & SWT 2
V Netbeans: TabbedPane, ScrollPane und Graphics AWT, Swing, JavaFX & SWT 4
V Graphics g - drawOval problem mit background AWT, Swing, JavaFX & SWT 1
M Graphics.fillOval AWT, Swing, JavaFX & SWT 1
javampir Sauberes Faden mit awt Graphics AWT, Swing, JavaFX & SWT 6
D 2D-Grafik Inhalt eines Graphics in anderes Graphics zeichnen.... AWT, Swing, JavaFX & SWT 3
X AWT Text der mit Graphics "drawString(...)" geschreiben wurde wieder löschen. AWT, Swing, JavaFX & SWT 6
C Zwei Ebenen in Graphics ? AWT, Swing, JavaFX & SWT 0
D Frage zu JFrame und Graphics AWT, Swing, JavaFX & SWT 4
I JavaFX Graphics Performance AWT, Swing, JavaFX & SWT 2
vodkaz Graphics aufrufen AWT, Swing, JavaFX & SWT 4
P 2D-Grafik NPE beim Zeichnen auf Graphics g AWT, Swing, JavaFX & SWT 8
M Graphics.drawImage von unten nach oben abbilden lassen AWT, Swing, JavaFX & SWT 6
F Probleme mit (Graphics g) II AWT, Swing, JavaFX & SWT 4
F Probleme mit (Graphics g) AWT, Swing, JavaFX & SWT 3
M JFrame Graphics.drawString Problem AWT, Swing, JavaFX & SWT 11
I Rechteck eines Graphics eines JPanels in einem anderen JPanel anzeigen AWT, Swing, JavaFX & SWT 7
antonbracke Multiplayer Shooter- Wie geht das mit Canvas & Graphics AWT, Swing, JavaFX & SWT 6
R Ankerpunkt bei Graphics AWT, Swing, JavaFX & SWT 3
R Fließende Bewegung von Graphics AWT, Swing, JavaFX & SWT 6
T AWT Graphics G Kein Text erscheint warum? AWT, Swing, JavaFX & SWT 12
L Graphics.drawImage() - Output-Größe entspricht nicht Parametern AWT, Swing, JavaFX & SWT 10
L Border verschwindet durch Graphics.drawImage() AWT, Swing, JavaFX & SWT 4
P "Graphics" wird nicht angezeigt AWT, Swing, JavaFX & SWT 11
B Swing Zeilenumbruch in Graphics AWT, Swing, JavaFX & SWT 20
T Graphics zeichnet nicht AWT, Swing, JavaFX & SWT 2
T Applet graphics - zeichnen funktioniert nicht AWT, Swing, JavaFX & SWT 14
R Graphics-Object speichern AWT, Swing, JavaFX & SWT 4
S Zeichnen mit java.awt.Graphics AWT, Swing, JavaFX & SWT 6
D Graphics zeichnen AWT, Swing, JavaFX & SWT 6
M Graphics auf JFrame Koordinatensystem AWT, Swing, JavaFX & SWT 3
T Graphics Ersetzend Zeichnen AWT, Swing, JavaFX & SWT 6
Developer_X Swing Auf ein BufferedImage mit Graphics/Graphics2D zeichnen AWT, Swing, JavaFX & SWT 6
D Erzeugen eines leeren Graphics-Objektes AWT, Swing, JavaFX & SWT 7
B Anzeigefehler in GridBagLayout durch paintComponent(Graphics g) AWT, Swing, JavaFX & SWT 3
A AWT AWT Panelfenster mit Graphics kombinieren AWT, Swing, JavaFX & SWT 7
T Graphics Parameterübergabe AWT, Swing, JavaFX & SWT 3
K Graphics.drawImage() sehr schnell AWT, Swing, JavaFX & SWT 5
N paintComponent für Graphics ansprechen AWT, Swing, JavaFX & SWT 2
M Graphics.drawImage verlangsamt sich plötzlich AWT, Swing, JavaFX & SWT 15
S Swing AWT (graphics (g)) AWT, Swing, JavaFX & SWT 27
E einfache Frage zu paintComponent und Graphics AWT, Swing, JavaFX & SWT 7
B Swing Tooltips auf Graphics AWT, Swing, JavaFX & SWT 8
Ä Graphics-Komponente auf JPanel wird nicht angezeigt AWT, Swing, JavaFX & SWT 4
S Applet mit Graphics dynamisch vergrößern AWT, Swing, JavaFX & SWT 3
T Dialog ohne Frame, direktes paint in graphics AWT, Swing, JavaFX & SWT 5
T Swing Component in Graphics zeichnen AWT, Swing, JavaFX & SWT 4
J getFontMetrics außerhalb von paint(Graphics g) AWT, Swing, JavaFX & SWT 8
E Problem bzw. Sinn von Graphics / Graphics Context AWT, Swing, JavaFX & SWT 21
S Weder ActionListener noch Graphics wollen so recht AWT, Swing, JavaFX & SWT 3
F Methode drawOval(int,int,int,int) von graphics AWT, Swing, JavaFX & SWT 4
G Graphics Objekte in AWT Container einfügen AWT, Swing, JavaFX & SWT 2
S Mit Graphics g ins Fenster zeichnen AWT, Swing, JavaFX & SWT 4
G Graphics - Raute AWT, Swing, JavaFX & SWT 3
G "pinseldicke" bei Graphics? AWT, Swing, JavaFX & SWT 2
G Graphics.drawImage() AWT, Swing, JavaFX & SWT 6
D Methode Graphics g klassenübergreifend nutzen. AWT, Swing, JavaFX & SWT 3
W java.lang.NoClassDefFoundError: org/eclipse/swt/graphics/Dev AWT, Swing, JavaFX & SWT 1
B Graphics und Canvas - Problem AWT, Swing, JavaFX & SWT 2
H eigene paintComponent(Graphics) kommt mit rezise nicht klar AWT, Swing, JavaFX & SWT 6
T Transparenz bei Graphics AWT, Swing, JavaFX & SWT 9
L Graphics AWT, Swing, JavaFX & SWT 37
B JPanel#paintComponent(Graphics g) << flackert oO AWT, Swing, JavaFX & SWT 3
Y Problem mit der Referenz eines Graphics-Objekts AWT, Swing, JavaFX & SWT 5
O Graphics erstellt Componente scheinbar nicht richtig AWT, Swing, JavaFX & SWT 23
G 2x Graphics in einer paint() miteinander verbinden AWT, Swing, JavaFX & SWT 11
K Gutes Buch gesucht (Graphics Only) Kennt jemand eins? AWT, Swing, JavaFX & SWT 5
J Einmal gleichzeitig auf zwei Graphics malen? AWT, Swing, JavaFX & SWT 5
E Image, Graphics, verzögert zeichnen AWT, Swing, JavaFX & SWT 2
H neuzeichnen von graphics nach minimierung oder ähnlichem AWT, Swing, JavaFX & SWT 10
G SWT Graphics Zeichnung neu laden AWT, Swing, JavaFX & SWT 13
G SWT Graphics GC Problem AWT, Swing, JavaFX & SWT 6
M Abstrakte Graphics Klasse erzeugen AWT, Swing, JavaFX & SWT 2
H awt Graphics und Image selbermachen ? AWT, Swing, JavaFX & SWT 12
D Image aus Graphics erstellen? AWT, Swing, JavaFX & SWT 2
raptorrs J2D graphics, sind 500px immer 500 px AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben