JPanel nach Menuauswahl

MarioK

Aktives Mitglied
Hallo Gemeinschaft,
was ich bisher habe:
Java:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class MyGraphEditor extends JFrame implements ActionListener{

	private static final long serialVersionUID = 1L;
	private JMenuBar mb;
	private JMenu graph, vertex; 
	private JMenuItem open, neu, save;
	private JMenuItem insert, move, delete, none;
	
	JLabel label = new JLabel("Selected Action");
	JTextField text = new JTextField("none", 20);
	JPanel mitte = new JPanel();
	JPanel unten = new JPanel();
	
	public MyGraphEditor(String s) {
		
		super(s);
		
		// Menu Graph
		mb = new JMenuBar();
		graph = new JMenu("Graph");

		open = new JMenuItem("open");
      	open.addActionListener(this);
      	graph.add(open);

		neu = new JMenuItem("new");
		neu.addActionListener(this);
		graph.add(neu);
		
		save = new JMenuItem("save");
		save.addActionListener(this);
		graph.add(save);
		
		// Menu Vertex
		vertex = new JMenu("Vertex");

		insert = new JMenuItem("insert");
      	insert.addActionListener(this);
      	vertex.add(insert);

		delete = new JMenuItem("delete");
		delete.addActionListener(this);
		vertex.add(delete);
		
		move = new JMenuItem("move");
		move.addActionListener(this);
		vertex.add(move);
		
		none = new JMenuItem("none");
		none.addActionListener(this);
		vertex.add(none);
		
		//Inhalte zufügen und ausrichten
		mb.add(graph);
		mb.add(vertex);
		this.setJMenuBar(mb);

		mitte.setBackground(Color.white);
		
		unten.setLayout(new FlowLayout());
		unten.add(label);
		unten.add(text);

		add(mitte, BorderLayout.CENTER);
		add(unten, BorderLayout.SOUTH);
		
	}
	
	@Override
	public void actionPerformed(ActionEvent e) {
		
		if (e.getSource() == open) {
			text.setText("Graph:open");
		}
		else if (e.getSource() == neu) {
			text.setText("Graph:new");
		}
		else if (e.getSource() == save){
			text.setText("Graph:save");
		}
		else if (e.getSource() == insert){
			text.setText("Vertex:insert");
			
		}
		else if (e.getSource() == delete){
			text.setText("Vertex:delete");
		}
		else if (e.getSource() == move){
			text.setText("Vertex:move");
		}
		else if (e.getSource() == none){
			text.setText("none");
		}
		
	}
	
	public static void main(String[] args) {
		MyGraphEditor frame = new MyGraphEditor("MyGraphEditor");	
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setSize(800,600);
      	frame.setVisible(true);
	}

	
	
}

und

Java:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class PunktZeichnen extends JPanel implements MouseListener {
	/**
	 * 
	 */
	private static final long serialVersionUID = 5565015365332074583L;
	private ArrayList<Punkt> kreise = new ArrayList<Punkt> ();

	/* Innere Klasse, um Koordinaten eines Kreises abzulegen */
	class Punkt {
		private int x, y, dx, dy;
		public Punkt(int x, int y, int dx, int dy) {
			this.x = x;
			this.y = y;
			this.dx = dx;
			this.dy = dy;
		}
	}


	public PunktZeichnen() {
		addMouseListener(this) ;
		this.setPreferredSize(new Dimension(320,100));
	}

	public void mouseClicked(MouseEvent e) {
		kreise.add(new Punkt(e.getX(), e.getY(), 10, 10));
		repaint();
	}

	public void mouseEntered(MouseEvent e) {};
	public void mouseExited(MouseEvent e) {};
	public void mousePressed(MouseEvent e) {};
	public void mouseReleased(MouseEvent e) {};

	public void paint(Graphics g) {
		super.paint(g);
		g.setColor(Color.black);

		for (Punkt k: kreise) {
			g.fillOval(k.x - k.dx/2, k.y - k.dx/2, k.dx, k.dy);
		}
	}

	/*public static void main(String[] args) {
		JFrame f = new JFrame("Kreise");
		f.setSize(500,500);
		f.getContentPane().add(new PunktZeichnen());
		f.setVisible(true);
	}*/
}

Nun zum PRoblem, was ich derzeit nicht lösen kann:
Ich möchte wenn der BEnutzer insert im MEnu auswählt, dass im JPanel mitte ein Punkt(kleiner Kreis) an einer beliebigen Stelle, die der BEnutzer mit der Maus auswählt und innerhalb des PAnels mitte, gezeichnet wird. Aber es will bei mir nicht so wirklich gehen. Habe es probiert mit:
Java:
else if (e.getSource() == insert){
			text.setText("Vertex:insert");
			mitte.add(new PunktZeichnen());
		}
Aber das wäre ja auch zu einfach gewesen. HAbt ihr da ein Tip für mich.
 
Zuletzt bearbeitet von einem Moderator:
S

SlaterB

Gast
nach dem add führe noch
mitte.revalidate(); aus

besser aber generell alle Komponenten initial auf dem Bildschirm verteilen
und abhängig von den Menüoptionen nur die Funktion des Zeichnens im Unterpanel an/abschalten oder ähnliches
(boolean der dort im Listener abgefragt wird)
 

MarioK

Aktives Mitglied
...
besser aber generell alle Komponenten initial auf dem Bildschirm verteilen
und abhängig von den Menüoptionen nur die Funktion des Zeichnens im Unterpanel an/abschalten oder ähnliches
(boolean der dort im Listener abgefragt wird)

Was meinst du damit : alle Komponenten initial auf dem Bildschirm verteilen??

Wird mit den Actions nicht die Funktion des Zeichnens im Unterpanel angeschaltet bzw wenn man einen anderen Punkt wählt der andere abgeschaltet und der neue angeschaltet??
 
S

SlaterB

Gast
im Moment fügst du später ein JPanel ein, diese JPanel, Buttons usw. sind alles Komponenten,
die am besten alle ganz am Anfang vor setVisible(true) gesetzt werden, nicht später
 

MarioK

Aktives Mitglied
Ok hat dank deiner Hinweise sehr gut funktioniert.

Nun "leider" zum nächsten Problem.
Mit dem Menupunkt delete möchte ich die Kreise, die ich mit dem Menupunkt insert im Panel gezeichnet habe wieder weg bekommen, gleichzeitig auch aus der Arraylist Kreise diesen Punkt entfernen. How to????

ich dachte bisher (für den Menupunkt delete):
1. Ich schreibe eine Klasse zB PunktLoeschen die, wenn man auf einen Punkt im JPanel mitte klickt, überprüft, ob in der ArrayList kreise dieser Punkt vorhanden ist. Ok wenn ja, dann remove diesen Punkt aus der Arraylist und filloval white den vorhandenen Punkt (also verschwindet dieser Punkt damit aus dem JPanel mitte. Wenn der Punkt nicht vorhanden ist in der ArrayList dann passiert nichts.

Soweit so gut die Gedanken, aber ... wenn ich PunktLoeschen aufrufe mit:
mitte.add(new PunktLoeschen()); dann zeichnet er weiter scharze Punkte, wenn ich in das JPanel klicke.

Wo ist mein Fehler ??? Ich denke das mitte.add(usw) ist nicht der richtige Weg, da ja PunktZeichnen noch aktiv ist. Wie kann ich das lösen?
 
S

SlaterB

Gast
evtl. wieder mit revalidate() veranlassen, dass die add()-Befehle auch in sichtbare Bildschirmänderungen umgesetzt werden
(Layout der Komponenten neu bestimmen)

bzw. doch nicht, du hast ja FlowLayout eingestellt, dann bleibt bei einem add() das alte Panel auch noch da, das müsstest du explizit removen bzw. mitte.removeAllComponents()

--------


aber schon komisch wie du da vorgehst, ich bin wie zuvor dafür, nur ein Panel durchgehend zu verwenden,
bei 'delete' kannst du direkt die Liste der Kreise leeren, durch ein repaint() veranlassen dass sie vom Bildschirm verschwinden
und wie gesagt gerne mit einem boolean oder änhliches dafür sorgen, dass der Listener des Panels keine neuen Kreise mehr einfügt
(so wie evtl. am Anfang, wenn da das Panel auch schon da wäre, boolean an = false; )
 

MarioK

Aktives Mitglied
Anfangs hatte ich auch nur ein JPanel, aber meine Vorgabe ist, dass das Ausgabefenster so ausschaut wie es jetzt ist... Mit Verschachtelungen bin ich halt auf das Ergebnis gekommen ... bei nur einem Panel hatte ich das BorderLayout angewendet, aber da war das JLabel und JTextField nicht nebeneinander, so wie es sein sollte ... ich hatte alle Layouts ausprobiert, kam aber zu keinem Ergebnis ..

mitte.removeAll(); entfernt leider auch die gezeichneten Kreise(Punkte) ...

mein einfach gedachte Überlegung war ja: Zeichne in einem Panel die Kreise, dafür eine Methode, und wenn der Benutzer delete auswählt, dann entfernt er halt die Kreise, mit einer Methode, aber so einfach ist es mit JAVA doch leider nicht ... bzw ich kann PunktZeichnen nicht einfach stopen, wenn der Benutzer einen anderen Menupunkt auswählt...


Habel mal noch die Klasse MyGraphEditor umgeschrieben, so dass kein FlowLayout zum Einsatz kommt ... aber nur ein JPanel zu benutzen habe ich noch nicht geschafft:
Java:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class MyGraphEditor extends JFrame{

	private static final long serialVersionUID = 1L;
	private JMenuBar mb;
	private JMenu graph, vertex; 
	private JMenuItem open, neu, save, insert, move, delete, none;
	
	JLabel label;
	JTextField text;
	JPanel mitte;
	JPanel unten;
	
	public MyGraphEditor() {
			
		super();
		this.setTitle("MyGraphEditor");
		
		text = new JTextField("none", 20);
		label = new JLabel("Selected Action"); 
		mitte = new JPanel();
		unten = new JPanel();
		
		// Menu Graph
		mb = new JMenuBar();
		graph = new JMenu("Graph");

		open = new JMenuItem("open");
      	open.addActionListener(new MenuAktion());
      	graph.add(open);
      	graph.addSeparator();

		neu = new JMenuItem("new");
		neu.addActionListener(new MenuAktion());
		graph.add(neu);
		graph.addSeparator();
		
		save = new JMenuItem("save");
		save.addActionListener(new MenuAktion());
		graph.add(save);
		graph.addSeparator();
		
		// Menu Vertex
		vertex = new JMenu("Vertex");

		insert = new JMenuItem("insert");
      	insert.addActionListener(new MenuAktion());
      	vertex.add(insert);
      	vertex.addSeparator();

		delete = new JMenuItem("delete");
		delete.addActionListener(new MenuAktion());
		vertex.add(delete);
		vertex.addSeparator();
		
		move = new JMenuItem("move");
		move.addActionListener(new MenuAktion());
		vertex.add(move);
		vertex.addSeparator();
		
		none = new JMenuItem("none");
		none.addActionListener(new MenuAktion());
		vertex.add(none);
		
		//Inhalte zufügen und ausrichten
		mb.add(graph);
		mb.add(vertex);
		this.setJMenuBar(mb);

		mitte.setBackground(Color.white);
		
		unten.add(label);
		unten.add(text);

		this.getContentPane().add(mitte, BorderLayout.CENTER);
		this.getContentPane().add(unten, BorderLayout.SOUTH);
		
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
	}
	class MenuAktion  implements ActionListener{
		
		@Override
		public void actionPerformed(ActionEvent e) {
		
			if (e.getActionCommand() == open.getText()) {
				text.setText("Graph:" + e.getActionCommand());
				
			}
			else if (e.getActionCommand() == neu.getText()) {
				text.setText("Graph:" + e.getActionCommand());
			}
			else if (e.getActionCommand() == save.getText()){
				text.setText("Graph:" + e.getActionCommand());
			}
			else if (e.getActionCommand() == insert.getText()){
				text.setText("Vertex:" + e.getActionCommand());
				mitte.add(new PunktZeichnen());
				mitte.revalidate();
			}
			else if (e.getActionCommand() == delete.getText()){
				text.setText("Vertex:" + e.getActionCommand());
			
			}
			else if (e.getActionCommand() == move.getText()){
				text.setText("Vertex:" + e.getActionCommand());
			}
			else if (e.getActionCommand() == none.getText()){
				text.setText("none");
			}
		}
		
	}
	
	public static void main(String[] args) {
		MyGraphEditor frame = new MyGraphEditor();	
		frame.setSize(800,600);
      	frame.setVisible(true);
	}

}
 
Zuletzt bearbeitet:
S

SlaterB

Gast
> mitte.removeAll(); entfernt leider auch die gezeichneten Kreise(Punkte) ...

<->

> und wenn der Benutzer delete auswählt, dann entfernt er halt die Kreise,

?! was willst du denn nun, dass die Kreise entfernt werden oder nicht?,

---------

> Anfangs hatte ich auch nur ein JPanel, aber meine Vorgabe ist

ob ein Panel oder nicht hat mit Textfeldern usw. wenig zu tun, jedenfalls nicht schlüssig erklärt,
du designst anfangs die GUI, mit Textfeldern, mit Buttons, mit einem JPanel zum Zeichnen,
das muss funktionieren, wenn nicht anfangs dann später schon gar nicht,
wenn das fertig ist (vor dem initialen setVisible(true) ) dann merke für den Rest des Programms: über add() oder remove() nicht mehr nachdenken!

über alle anderen Probleme wie Kreise zu zeichnen, zu entfernen usw. kann man danach in Ruhe nachdenken,
zu lösen mit Leeren von Listen, repaint() und ähnlichen Aktionen
 

MarioK

Aktives Mitglied
delete:
beim Klicken in den Panel bzw Zeichenfläche soll folgende Aktion ausgeführt werden: liegt an der Position des Klicks ein Kreis (Punkt), so soll dieser entfernt werden, d.h. er soll aus der ArrayList entfernt werden und nicht mehr gezeichnet werden. Liegt kein Kreis(Punkt) an der Position des Klicks, so hat das Klicken keine Wirkung.

Ich habe mich mit der GUI von JAVA jetzt das erste Mal auseinandergesetzt. Und was bei rum gekommen ist ja auch. Jetzt gilt es halt zu verbessern.
 

MarioK

Aktives Mitglied
so habe jetzt deine vorgeschlagenen boolean´s mit eingebracht und siehe da es geht weiter ... jetzt hänge ich nur noch bei dem deleten fest ... sprich mir fehlt die Anweisung die vergleicht ob, wenn ich im Panel klicke, ein Punkt schon vorhanden ist...
Java:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.LineBorder;

public class MyGraphEditor extends JFrame{
	
	private boolean insertPoint = false;
	private boolean deletePoint = false;
	private boolean movePoint = false;
	private boolean nonePoint = false;
	private static final long serialVersionUID = 1L;
	private JMenuBar mb;
	private JMenu graph, vertex; 
	private JMenuItem open, neu, save, insert, move, delete, none;
	
	JLabel label;
	JTextField text;
	JPanel mitte;
	JPanel unten;
	
	public MyGraphEditor() {
			
		super();
		this.setTitle("MyGraphEditor");
		
		text = new JTextField("none", 20);
		label = new JLabel("Selected Action"); 
		mitte = new JPanel();
		unten = new JPanel();
		
		// Menu Graph
		mb = new JMenuBar();
		graph = new JMenu("Graph");

		open = new JMenuItem("open");
      	open.addActionListener(new MenuAktion());
      	graph.add(open);
      	graph.addSeparator();

		neu = new JMenuItem("new");
		neu.addActionListener(new MenuAktion());
		graph.add(neu);
		graph.addSeparator();
		
		save = new JMenuItem("save");
		save.addActionListener(new MenuAktion());
		graph.add(save);
		graph.addSeparator();
		
		// Menu Vertex
		vertex = new JMenu("Vertex");

		insert = new JMenuItem("insert");
      	insert.addActionListener(new MenuAktion());
      	vertex.add(insert);
      	vertex.addSeparator();

		delete = new JMenuItem("delete");
		delete.addActionListener(new MenuAktion());
		vertex.add(delete);
		vertex.addSeparator();
		
		move = new JMenuItem("move");
		move.addActionListener(new MenuAktion());
		vertex.add(move);
		vertex.addSeparator();
		
		none = new JMenuItem("none");
		none.addActionListener(new MenuAktion());
		vertex.add(none);
		
		//Inhalte zufügen und ausrichten
		mb.add(graph);
		mb.add(vertex);
		this.setJMenuBar(mb);

		mitte.setBackground(Color.white);
		
		unten.add(label);
		unten.add(text);

		this.getContentPane().add(mitte, BorderLayout.CENTER);
		this.getContentPane().add(unten, BorderLayout.SOUTH);
		
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
	}
	
	class MenuAktion implements ActionListener{
		
		@Override
		public void actionPerformed(ActionEvent e) {
		
			if (e.getActionCommand() == open.getText()) {
				text.setText("Graph:" + e.getActionCommand());
				
			}
			else if (e.getActionCommand() == neu.getText()) {
				text.setText("Graph:" + e.getActionCommand());
			}
			else if (e.getActionCommand() == save.getText()){
				text.setText("Graph:" + e.getActionCommand());
			}
			else if (e.getActionCommand() == insert.getText()){
				insertPoint = true;
				deletePoint = false;
				movePoint = false;
				nonePoint = false;
				text.setText("Vertex:" + e.getActionCommand());
				mitte.add(new PunktVerarbeiten());
				mitte.revalidate();
			}
			else if (e.getActionCommand() == delete.getText()){
				insertPoint = false;
				deletePoint = true;
				movePoint = false;
				nonePoint = false;
				text.setText("Vertex:" + e.getActionCommand());
				mitte.add(new PunktVerarbeiten());
				mitte.revalidate();
			
			}
			else if (e.getActionCommand() == move.getText()){
				insertPoint = false;
				deletePoint = false;
				movePoint = true;
				nonePoint = false;
				text.setText("Vertex:" + e.getActionCommand());
				mitte.add(new PunktVerarbeiten());
				mitte.revalidate();
			}
			else if (e.getActionCommand() == none.getText()){
				insertPoint = false;
				deletePoint = false;
				movePoint = false;
				nonePoint = true;
				text.setText("none");
			}
		}
		
	}
	
	class PunktVerarbeiten extends JPanel implements MouseListener {

		private static final long serialVersionUID = 5565015365332074583L;
		private ArrayList<Punkt> kreise = new ArrayList<Punkt> ();

		/* Innere Klasse, um Koordinaten eines Kreises abzulegen */
		class Punkt {
			private int x, y, dx, dy;
			public Punkt(int x, int y, int dx, int dy) {
				this.x = x;
				this.y = y;
				this.dx = dx;
				this.dy = dy;
			}
		}


		public PunktVerarbeiten() {
			addMouseListener(this) ;
			this.setPreferredSize(new Dimension(780,500));
			this.setBackground(Color.WHITE);
			this.setBorder(new LineBorder(Color.BLACK));
		}

		public void mouseClicked(MouseEvent e) {
			if (insertPoint){
				kreise.add(new Punkt(e.getX(), e.getY(), 10, 10));
				repaint();
			}
			else if (deletePoint){
				Punkt k = new Punkt(e.getX(), e.getY(), 10, 10);
				if (kreise.contains(k)){
					kreise.remove(new Punkt(e.getX(), e.getY(), 10, 10));
					repaint();
				}
			}
		}

		public void mouseEntered(MouseEvent e) {};
		public void mouseExited(MouseEvent e) {};
		public void mousePressed(MouseEvent e) {};
		public void mouseReleased(MouseEvent e) {};

		public void paint(Graphics g) {
			super.paint(g);
			if (insertPoint){
				g.setColor(Color.black);
				for (Punkt k: kreise) {
					g.fillOval(k.x - k.dx/2, k.y - k.dx/2, k.dx, k.dy);
				}
			}
			
			else if (deletePoint){
				g.setColor(Color.black);
				for (Punkt k: kreise) {
					g.fillOval(k.x - k.dx/2, k.y - k.dx/2, k.dx, k.dy);
				}
			}
		}

	}
	
	
	public static void main(String[] args) {
		MyGraphEditor frame = new MyGraphEditor();	
		frame.setSize(800,600);
      	frame.setVisible(true);
	}

}
 
Zuletzt bearbeitet:
S

SlaterB

Gast
wenn du pixelgenau auf die Mitte klickst, dann funktioniert das vielleicht jetzt schon,
(angenommen dass die Steuerung an sich mit booleans usw. hinhaut)
aber du solltest vielleicht eher die Liste der bisherigen Kreise durchlaufen, den Abstand zum aktuellen Klick-Punkt berechnen
(Satz des Pythagoras) und bei Abstand kleiner radius den Listen-Kreis entfernen
 

MarioK

Aktives Mitglied
ich wollte das damit pixelgenau machen :
Java:
else if (deletePoint){
                Punkt k = new Punkt(e.getX(), e.getY(), 10, 10);
                if (kreise.contains(k)){
                    kreise.remove(new Punkt(e.getX(), e.getY(), 10, 10));
                    repaint();
                }
            }
aber es kommt immer false bei raus ... egal ob ich den Punkt genau treffe oder nicht .... er deletet quasi noch nicht ...
 
S

SlaterB

Gast
damit dein neues Punkt-Objekt mit dem alten als übereinstimmend erkannt wird, musst du die equals(Object) Methode richtig implementieren,
Java schaut sich nicht standardmäßig alle Attribute an oder ähnliches
 

MarioK

Aktives Mitglied
da muss ich jetzt mal passen .. dafür bräuchte ich ein Beispiel um das zu verstehen ..

um ein Kuchen zu backen brauch ich doch auch nur die Zutaten und muss nicht wissen woher die Zutaten stammen oder wie die Zutaten gewachsen oder entstanden sind ... sorry, aber für solch eine kleine Sache ein so, in meinen Augen, doch komplexer Code ... andere Hochsprachen haben sich da auch nicht so ... aber leider komme ich derzeit nicht an JAVA vorbei bzw ich habe keine andere Wahl ... ;(
 
Zuletzt bearbeitet:

MarioK

Aktives Mitglied
ich werde mir das mal genauer anschauen,

aber,
warum klappt den kein contains?? mit Punkt k = new Punkt(e.getX(), e.getY(), 10, 10); hole ich mir den aktuellen Punkt und mit if (kreise.contains(k)) schaue ich dann doch ob der Punkt in der Liste vorhanden ist. Gut ich weiss dass das bei mir nicht funktioniert, bekomme ja immer false, aber warum? Contains wurde doch deswegen geschaffen um zu überprüfen ob etwas in der List vorhanden ist.
 
S

SlaterB

Gast
aus welchem Grund sollte dein Punkt bzw. Kreis mit einem aus der Liste übereinstimmen um gefunden zu werden?
Java muss das wissen, es gibt wie gesagt keinen automatischen Vergleich aller Attribute oder ähnliches,

String und andere Java-Klassen implementieren die equals-Methode, so dass ein sinnvoller Vergleich ausgeführt wird
 

MarioK

Aktives Mitglied
aktuallisierter Code, aber leider geht equals immer noch nicht ...
Java:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.LineBorder;

public class MyGraphEditor extends JFrame{
	
	private boolean insertPoint = false;
	private boolean deletePoint = false;
	private boolean movePoint = false;
	private boolean nonePoint = false;
	private static final long serialVersionUID = 1L;
	private JMenuBar mb;
	private JMenu graph, vertex; 
	private JMenuItem open, neu, save, insert, move, delete, none;
	
	JLabel label;
	JTextField text;
	JPanel mitte;
	JPanel unten;
	
	public MyGraphEditor() {
			
		super();
		this.setTitle("MyGraphEditor");
		
		text = new JTextField("none", 20);
		label = new JLabel("Selected Action"); 
		mitte = new JPanel();
		unten = new JPanel();
		
		// Menu Graph
		mb = new JMenuBar();
		graph = new JMenu("Graph");

		open = new JMenuItem("open");
      	open.addActionListener(new MenuAktion());
      	graph.add(open);
      	graph.addSeparator();

		neu = new JMenuItem("new");
		neu.addActionListener(new MenuAktion());
		graph.add(neu);
		graph.addSeparator();
		
		save = new JMenuItem("save");
		save.addActionListener(new MenuAktion());
		graph.add(save);
		graph.addSeparator();
		
		// Menu Vertex
		vertex = new JMenu("Vertex");

		insert = new JMenuItem("insert");
      	insert.addActionListener(new MenuAktion());
      	vertex.add(insert);
      	vertex.addSeparator();

		delete = new JMenuItem("delete");
		delete.addActionListener(new MenuAktion());
		vertex.add(delete);
		vertex.addSeparator();
		
		move = new JMenuItem("move");
		move.addActionListener(new MenuAktion());
		vertex.add(move);
		vertex.addSeparator();
		
		none = new JMenuItem("none");
		none.addActionListener(new MenuAktion());
		vertex.add(none);
		
		//Inhalte zufügen und ausrichten
		mb.add(graph);
		mb.add(vertex);
		this.setJMenuBar(mb);

		mitte.setBackground(Color.white);
		
		unten.add(label);
		unten.add(text);

		this.getContentPane().add(mitte, BorderLayout.CENTER);
		this.getContentPane().add(unten, BorderLayout.SOUTH);
		
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
	}
	
	class MenuAktion implements ActionListener{
		
		@Override
		public void actionPerformed(ActionEvent e) {
		
			if (e.getActionCommand() == open.getText()) {
				text.setText("Graph:" + e.getActionCommand());
				
			}
			else if (e.getActionCommand() == neu.getText()) {
				text.setText("Graph:" + e.getActionCommand());
			}
			else if (e.getActionCommand() == save.getText()){
				text.setText("Graph:" + e.getActionCommand());
			}
			else if (e.getActionCommand() == insert.getText()){
				insertPoint = true;
				deletePoint = false;
				movePoint = false;
				nonePoint = false;
				text.setText("Vertex:" + e.getActionCommand());
				mitte.add(new PunktVerarbeiten());
				mitte.revalidate();
			}
			else if (e.getActionCommand() == delete.getText()){
				insertPoint = false;
				deletePoint = true;
				movePoint = false;
				nonePoint = false;
				text.setText("Vertex:" + e.getActionCommand());
				mitte.add(new PunktVerarbeiten());
				mitte.revalidate();
			
			}
			else if (e.getActionCommand() == move.getText()){
				insertPoint = false;
				deletePoint = false;
				movePoint = true;
				nonePoint = false;
				text.setText("Vertex:" + e.getActionCommand());
				mitte.add(new PunktVerarbeiten());
				mitte.revalidate();
			}
			else if (e.getActionCommand() == none.getText()){
				insertPoint = false;
				deletePoint = false;
				movePoint = false;
				nonePoint = true;
				text.setText("none");
			}
		}
		
	}
	
	class PunktVerarbeiten extends JPanel implements MouseListener {

		private static final long serialVersionUID = 5565015365332074583L;
		private ArrayList<Punkt> kreise = new ArrayList<Punkt> ();
		 
		/* Innere Klasse, um Koordinaten eines Kreises abzulegen */
		class Punkt {
			private int x, y, dx, dy;
			public Punkt(int x, int y, int dx, int dy) {
				this.x = x;
				this.y = y;
				this.dx = dx;
				this.dy = dy;
			}
		}

		@Override
		public boolean equals(Object obj) {
			 if ( ((PunktVerarbeiten) obj).getX() == this.getX() && ((PunktVerarbeiten) obj).getY() == this.getY() ){
				 return true;
			 }
			 return false;
		}


		public PunktVerarbeiten() {
			addMouseListener(this) ;
			this.setPreferredSize(new Dimension(780,500));
			this.setBackground(Color.WHITE);
			this.setBorder(new LineBorder(Color.BLACK));
		}

		public void mouseClicked(MouseEvent e) {
			if (insertPoint){
				kreise.add(new Punkt(e.getX(), e.getY(), 10, 10));
				
				System.out.println(e.getX() + " : " +  e.getY());
				repaint();
			}
			else if (deletePoint){
				
				Punkt t = new Punkt(e.getX(), e.getY(), 10, 10);
				System.out.println(e.getX() + " : " + e.getY());
				for (int x=0; x<kreise.size();x++){
					if(kreise.get(x).equals(t) == true){
						System.out.println("geschafft");
						kreise.remove(t);
						repaint();
					}
				}
			}
		}

		public void mouseEntered(MouseEvent e) {};
		public void mouseExited(MouseEvent e) {};
		public void mousePressed(MouseEvent e) {};
		public void mouseReleased(MouseEvent e) {};

		public void paint(Graphics g) {
			super.paint(g);
			if (insertPoint){
				g.setColor(Color.black);
				for (Punkt k: kreise) {
					g.fillOval(k.x - k.dx/2, k.y - k.dx/2, k.dx, k.dy);
				}
			}
			
			else if (deletePoint){
				g.setColor(Color.black);
				for (Punkt k: kreise) {
					g.fillOval(k.x - k.dx/2, k.y - k.dx/2, k.dx, k.dy);
				}
			}
		}

	}
	
	
	public static void main(String[] args) {
		MyGraphEditor frame = new MyGraphEditor();	
		frame.setSize(800,600);
      	frame.setVisible(true);
	}

}

selbst mit der Eclipse generierten Equals MEthode geht das nicht ...
Java:
@Override
		public boolean equals(Object obj) {
			if (this == obj)
				return true;
			if (obj == null)
				return false;
			if (!(obj instanceof PunktVerarbeiten))
				return false;
			PunktVerarbeiten other = (PunktVerarbeiten) obj;
			if (!getOuterType().equals(other.getOuterType()))
				return false;
			if (kreise == null) {
				if (other.kreise != null)
					return false;
			} else if (!kreise.equals(other.kreise))
				return false;
			return true;
		}
 
Zuletzt bearbeitet:

MarioK

Aktives Mitglied
So ich habe es geschafft und das Ganze auch ohne Equals ... mit 2 ArrayList<Integer> ging es auch ...
Java:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.LineBorder;
 
public class MyGraphEditor extends JFrame{
    
    private boolean insertPoint = false;
    private boolean deletePoint = false;
    private boolean movePoint = false;
    private boolean nonePoint = false;
    private static final long serialVersionUID = 1L;
    private JMenuBar mb;
    private JMenu graph, vertex; 
    private JMenuItem open, neu, save, insert, move, delete, none;
    
    JLabel label;
    JTextField text;
    JPanel mitte;
    JPanel unten;
    
    public MyGraphEditor() {
            
        super();
        this.setTitle("MyGraphEditor");
        
        text = new JTextField("none", 20);
        label = new JLabel("Selected Action"); 
        mitte = new JPanel();
        unten = new JPanel();
        
        // Menu Graph
        mb = new JMenuBar();
        graph = new JMenu("Graph");
 
        open = new JMenuItem("open");
        open.addActionListener(new MenuAktion());
        graph.add(open);
        graph.addSeparator();
 
        neu = new JMenuItem("new");
        neu.addActionListener(new MenuAktion());
        graph.add(neu);
        graph.addSeparator();
        
        save = new JMenuItem("save");
        save.addActionListener(new MenuAktion());
        graph.add(save);
        graph.addSeparator();
        
        // Menu Vertex
        vertex = new JMenu("Vertex");
 
        insert = new JMenuItem("insert");
        insert.addActionListener(new MenuAktion());
        vertex.add(insert);
        vertex.addSeparator();
 
        delete = new JMenuItem("delete");
        delete.addActionListener(new MenuAktion());
        vertex.add(delete);
        vertex.addSeparator();
        
        move = new JMenuItem("move");
        move.addActionListener(new MenuAktion());
        vertex.add(move);
        vertex.addSeparator();
        
        none = new JMenuItem("none");
        none.addActionListener(new MenuAktion());
        vertex.add(none);
        
        //Inhalte zufügen und ausrichten
        mb.add(graph);
        mb.add(vertex);
        this.setJMenuBar(mb);
 
        mitte.setBackground(Color.white);
        
        unten.add(label);
        unten.add(text);
 
        this.getContentPane().add(mitte, BorderLayout.CENTER);
        this.getContentPane().add(unten, BorderLayout.SOUTH);
        
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
    }
    
    class MenuAktion implements ActionListener{
        
        @Override
        public void actionPerformed(ActionEvent e) {
        
            if (e.getActionCommand() == open.getText()) {
                text.setText("Graph:" + e.getActionCommand());
                
            }
            
            else if (e.getActionCommand() == neu.getText()) {
                text.setText("Graph:" + e.getActionCommand());
            }
            
            else if (e.getActionCommand() == save.getText()){
                text.setText("Graph:" + e.getActionCommand());
            }
            
            else if (e.getActionCommand() == insert.getText()){
                insertPoint = true;
                deletePoint = false;
                movePoint = false;
                nonePoint = false;
                text.setText("Vertex:" + e.getActionCommand());
                mitte.add(new PunktVerarbeiten());
                mitte.revalidate();
            }
            
            else if (e.getActionCommand() == delete.getText()){
                insertPoint = false;
                deletePoint = true;
                movePoint = false;
                nonePoint = false;
                text.setText("Vertex:" + e.getActionCommand());
                mitte.add(new PunktVerarbeiten());
                mitte.revalidate();
            
            }
            
            else if (e.getActionCommand() == move.getText()){
                insertPoint = false;
                deletePoint = false;
                movePoint = true;
                nonePoint = false;
                text.setText("Vertex:" + e.getActionCommand());
                mitte.add(new PunktVerarbeiten());
                mitte.revalidate();
            }
            
            else if (e.getActionCommand() == none.getText()){
                insertPoint = false;
                deletePoint = false;
                movePoint = false;
                nonePoint = true;
                text.setText("none");
            }
            
        }
        
    }
    
    class PunktVerarbeiten extends JPanel implements MouseListener {
 
        private static final long serialVersionUID = 5565015365332074583L;
        private ArrayList<Integer> kord1 = new ArrayList<Integer> ();
        private ArrayList<Integer> kord2 = new ArrayList<Integer> ();
              
        public PunktVerarbeiten() {
        	
            addMouseListener(this) ;
            this.setPreferredSize(new Dimension(780,500));
            this.setBackground(Color.WHITE);
            this.setBorder(new LineBorder(Color.BLACK));
            
        }
 
        public void mouseClicked(MouseEvent e) {
        	
            if (insertPoint){
                kord1.add(e.getX());
                kord2.add(e.getY());                
                repaint();
            }
            
            else if (deletePoint){  
                int x1 = e.getX();
                int y1 = e.getY();
                for (int i=0; i<kord1.size() & i<kord2.size(); i++){
                	if(x1 == kord1.get(i) & y1 == kord2.get(i)){
                		kord1.remove(i);
                		kord2.remove(i);
                		repaint();
                	}
                }
            }
            
        }
 
        public void mouseEntered(MouseEvent e) {};
        public void mouseExited(MouseEvent e) {};
        public void mousePressed(MouseEvent e) {};
        public void mouseReleased(MouseEvent e) {};
 
        public void paint(Graphics g) {
        	
            super.paint(g);
            g.setColor(Color.black);
            for (int i=0; i<kord1.size() & i<kord2.size(); i++){
            	g.fillOval(kord1.get(i) - 10/2, kord2.get(i) - 10/2, 10, 10);
            }
             
        }
 
    }
    
    
    public static void main(String[] args) {
    	
        MyGraphEditor frame = new MyGraphEditor();  
        frame.setSize(800,600);
        frame.setVisible(true);
        
    }
 
}
 
Zuletzt bearbeitet:
S

SlaterB

Gast
meine Güte, für Punkt brauchst du equals, Punkt-Objekte sind in der Liste,
nicht die (schlecht benannte) JPanel-Klasse PunktVerarbeiten..
 

MarioK

Aktives Mitglied
nur ich habe nicht mehr den just und auch keine Zeit mehr mich mit Nebensächlichkeiten wie equals aufzuhalten .... hier soll es nur um layout und draw gehen ....

ich danke dir trotz allem dem für deine Mühe ...
 

MarioK

Aktives Mitglied
ich habe auch noch einmal deine Kritik zum JPanel beherzigt und alles neu gesetzt.
Java:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
 
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JTextField;
  
public class MyGraphEditor2 extends JFrame{

    private PunktVerarbeiten zeichnenFenster = new PunktVerarbeiten();
    private boolean insertPoint = false;
    private boolean deletePoint = false;
    private boolean movePoint = false;
    private boolean nonePoint = false;
    private static final long serialVersionUID = 1L;
    private JMenuBar mb;
    private JMenu graph, vertex; 
    private JMenuItem open, neu, save, insert, move, delete, none;
    
    JLabel label;
    JTextField text;

    public MyGraphEditor2(){
    	
        JFrame frame = new JFrame("MyGraphEditor"); 
        
        // Menu Graph
        mb = new JMenuBar();
        graph = new JMenu("Graph");
 
        open = new JMenuItem("open");
        open.addActionListener(new MenuAktion());
        graph.add(open);
        graph.addSeparator();
 
        neu = new JMenuItem("new");
        neu.addActionListener(new MenuAktion());
        graph.add(neu);
        graph.addSeparator();
        
        save = new JMenuItem("save");
        save.addActionListener(new MenuAktion());
        graph.add(save);
        graph.addSeparator();
        
        // Menu Vertex
        vertex = new JMenu("Vertex");
 
        insert = new JMenuItem("insert");
        insert.addActionListener(new MenuAktion());
        vertex.add(insert);
        vertex.addSeparator();
 
        delete = new JMenuItem("delete");
        delete.addActionListener(new MenuAktion());
        vertex.add(delete);
        vertex.addSeparator();
        
        move = new JMenuItem("move");
        move.addActionListener(new MenuAktion());
        vertex.add(move);
        vertex.addSeparator();
        
        none = new JMenuItem("none");
        none.addActionListener(new MenuAktion());
        vertex.add(none);

        mb.add(graph);
        mb.add(vertex);
        
        JPanel panel = new JPanel(new FlowLayout());
        text = new JTextField("none", 20);
        label = new JLabel("Selected Action");       
        panel.add(label);
        panel.add(text);
        
        frame.setJMenuBar(mb);     
        frame.setLayout(new BorderLayout());
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        zeichnenFenster.setPreferredSize(new Dimension(800,500));
        frame.add(zeichnenFenster,BorderLayout.CENTER);
        frame.add(panel,BorderLayout.SOUTH);
        frame.pack();
        frame.setVisible(true);
        frame.setLocationRelativeTo(null);
        
    }
    
    public static void main(String[] args){
    	
        new MyGraphEditor2();
        
    }
	
    class PunktVerarbeiten extends JComponent implements MouseListener{
	
		private static final long serialVersionUID = 1L;
		private ArrayList<Integer> kord1 = new ArrayList<Integer> ();
    	private ArrayList<Integer> kord2 = new ArrayList<Integer> ();
    	
    	public PunktVerarbeiten() {
    		addMouseListener(this) ;
    	}
    	
    	@Override
    	protected void paintComponent(Graphics g) {
    		
    		super.paintComponent(g);
    		g.setColor(Color.black);
    		for (int i=0; i<kord1.size() & i<kord2.size(); i++){
    			g.fillOval(kord1.get(i) - 10/2, kord2.get(i) - 10/2, 10, 10);
    		}
    		
    	}
    	
    	public void mouseClicked(MouseEvent e) {
        	
            if (insertPoint){
                kord1.add(e.getX());
                kord2.add(e.getY());                
                repaint();
            }
            
            else if (deletePoint){  
                int x1 = e.getX();
                int y1 = e.getY();
                for (int i=0; i<kord1.size() & i<kord2.size(); i++){
                	if(x1 == kord1.get(i) & y1 == kord2.get(i)){
                		kord1.remove(i);
                		kord2.remove(i);
                		repaint();
                	}
                }
            }
            
        }

		public void mouseEntered(MouseEvent arg0) {}
		public void mouseExited(MouseEvent arg0) {}
		public void mousePressed(MouseEvent arg0) {}
		public void mouseReleased(MouseEvent arg0) {}
    	
    }

	class MenuAktion implements ActionListener {

		@Override
		public void actionPerformed(ActionEvent e) {
		
			if (e.getActionCommand() == open.getText()) {
				text.setText("Graph:" + e.getActionCommand());           
			}
        
			else if (e.getActionCommand() == neu.getText()) {
				text.setText("Graph:" + e.getActionCommand());
			}
        
			else if (e.getActionCommand() == save.getText()){
				text.setText("Graph:" + e.getActionCommand());
			}
        
			else if (e.getActionCommand() == insert.getText()){
				insertPoint = true;
				deletePoint = false;
				movePoint = false;
				nonePoint = false;
				text.setText("Vertex:" + e.getActionCommand());
			}
        
			else if (e.getActionCommand() == delete.getText()){
				insertPoint = false;
				deletePoint = true;
				movePoint = false;
				nonePoint = false;
				text.setText("Vertex:" + e.getActionCommand());          
			}
        
			else if (e.getActionCommand() == move.getText()){
				insertPoint = false;
				deletePoint = false;
				movePoint = true;
				nonePoint = false;
				text.setText("Vertex:" + e.getActionCommand());
			}
        
			else if (e.getActionCommand() == none.getText()){
				insertPoint = false;
				deletePoint = false;
				movePoint = false;
				nonePoint = true;
				text.setText("none");
			}

		}

	}
	
}
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Nach scrollen verschwindet das zuvor im JPanel gezeichnete AWT, Swing, JavaFX & SWT 2
it_is_all JPanel verschwindet nach Button-Klick AWT, Swing, JavaFX & SWT 2
W Swing JPanel nur einmal nach mehreren Änderungen neu zeichnen AWT, Swing, JavaFX & SWT 1
K Swing JPanel nach oben und links vergrößern AWT, Swing, JavaFX & SWT 3
A JPanel wird nach Buttonklick nicht angezeigt AWT, Swing, JavaFX & SWT 2
J 2D-Grafik JPanel wird erst 1-2sek nach start des JFrames angezeigt AWT, Swing, JavaFX & SWT 3
S Swing Bild auf jPanel nach Änderung von JComboBox zeichnen AWT, Swing, JavaFX & SWT 4
R JPanel wird erst neu gezeichnet nach erneuter auswahl AWT, Swing, JavaFX & SWT 8
Sammay Swing JPanel nach dem einfügen neu zeichnen AWT, Swing, JavaFX & SWT 6
C Drag and Drop JPanel auf JPanel nach drop erneut verschieben? AWT, Swing, JavaFX & SWT 3
C JFrame nach JPanel abfragen AWT, Swing, JavaFX & SWT 6
E JPanel verschiebt sich nach add AWT, Swing, JavaFX & SWT 13
D JPanel nach ein paar sekunden verändern AWT, Swing, JavaFX & SWT 5
K Tab von JPanel nach JInternalFrame AWT, Swing, JavaFX & SWT 2
C JPanel erst nach Button click anzeigen. AWT, Swing, JavaFX & SWT 11
B JMenuBar sowie Buttons nach repaint auf JPanel AWT, Swing, JavaFX & SWT 2
N JPanel zeichnet Inhalt erst nach Größenänderung des JFrames AWT, Swing, JavaFX & SWT 3
A Swing JFrame / JPanel Grösse soll sich nach Inhalt richten. AWT, Swing, JavaFX & SWT 2
G Update von JPanel nach Buttonbetätigung AWT, Swing, JavaFX & SWT 1
P Zwei JPanel übereianderlegen AWT, Swing, JavaFX & SWT 14
XWing Basic JPanel mit 2 Buttons beutzen. AWT, Swing, JavaFX & SWT 10
G JPanel per Drag and Drop JButtons und Bilder ablegen AWT, Swing, JavaFX & SWT 1
G JPanel mit JButtons und Bilder AWT, Swing, JavaFX & SWT 5
N AWT JPanel zu Jframe hinzufügen AWT, Swing, JavaFX & SWT 2
M clear JPanel before repainting AWT, Swing, JavaFX & SWT 1
B ImageIcon auf JPanel austauschen AWT, Swing, JavaFX & SWT 3
T Swing Reload JPanel + darin liegende ProgressBar AWT, Swing, JavaFX & SWT 9
P Swing Mehrere JLabels mit ImageIcon in JPanel lesen AWT, Swing, JavaFX & SWT 1
E JScrollPane mit JPanel verbinden AWT, Swing, JavaFX & SWT 1
F JPanel Celleditor AWT, Swing, JavaFX & SWT 8
B JPanel-Inhalte inkl. JTextarea zoomen? AWT, Swing, JavaFX & SWT 3
B Mit ContentPane werden Komponenten angezeigt, mit SplitPane, JPanel nicht? AWT, Swing, JavaFX & SWT 6
CptK Funktionsgraphen effizient zeichnen und nur Teile von JPanel erneuern AWT, Swing, JavaFX & SWT 2
P Button simpler random auf einem JPanel verteilen? AWT, Swing, JavaFX & SWT 3
O Swing "Eigenes" JPanel wird dem JScrollPane nicht hinzugefügt AWT, Swing, JavaFX & SWT 5
Ich lerne Java. Swing Von JPanel A auf JPanel B zugreifen. AWT, Swing, JavaFX & SWT 4
A JPanel austauschen und Focus geben AWT, Swing, JavaFX & SWT 3
E Auf JPanel malen und davor JComponenten anzeigen AWT, Swing, JavaFX & SWT 12
L JComponent aus JPanel anhand Mausposition ermitteln AWT, Swing, JavaFX & SWT 10
J JPanel wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
B Verschiebbares JPanel "ruckelt" im Randbereich AWT, Swing, JavaFX & SWT 2
S Swing JPanel nimmt keinen KeyListener an AWT, Swing, JavaFX & SWT 7
K JLabel mit Bilder im nicht initialisierten JPanel hinzufügen AWT, Swing, JavaFX & SWT 5
Hatsi09 Swing JPanel Bild einfügen AWT, Swing, JavaFX & SWT 14
L JPanel zeigt keinen Inhalt AWT, Swing, JavaFX & SWT 1
dereki2000 JPanel mit Rückgbe wie bei JOptionPane AWT, Swing, JavaFX & SWT 3
E Hintergrundfarbe setzen in JPanel funktioneirt nicht AWT, Swing, JavaFX & SWT 4
P JPanel KeyListener hinzufügen AWT, Swing, JavaFX & SWT 8
P Bewegung eines Balkens in eineum JPanel welches als Spielfeld fungiert AWT, Swing, JavaFX & SWT 2
L Swing JPanel Größe anpassen AWT, Swing, JavaFX & SWT 6
D Platzierung von JTextfield in JPanel AWT, Swing, JavaFX & SWT 3
D Swing Anwendung ohne JPanel erstellen AWT, Swing, JavaFX & SWT 1
M Swing JPanel in JScrollPane AWT, Swing, JavaFX & SWT 3
M Zwei JPanel übereinander nur vorderes "repainten" AWT, Swing, JavaFX & SWT 3
J 2D-Grafik Background einer Jpanel Klasse ändern AWT, Swing, JavaFX & SWT 1
J Ziehen eines Buttons im JPanel AWT, Swing, JavaFX & SWT 2
J Button lässt sich nicht auf dem JPanel verschieben AWT, Swing, JavaFX & SWT 5
D zwei JLabel stapeln in einem JPanel AWT, Swing, JavaFX & SWT 5
DaCrazyJavaExpert Swing JPanel "ContentPane" wird nicht gesetzt/angezeigt AWT, Swing, JavaFX & SWT 16
DaCrazyJavaExpert Swing Größe des JPanel ändern/wird nicht geändert. AWT, Swing, JavaFX & SWT 3
DaCrazyJavaExpert Swing JPanel wird in JScollPane nicht angezeigt AWT, Swing, JavaFX & SWT 2
B Bar Plot in Swing JPanel AWT, Swing, JavaFX & SWT 0
F Screenshot eines JPanel AWT, Swing, JavaFX & SWT 3
S JPanel rotieren, Bild ist abgeschnitten, Clipping? AWT, Swing, JavaFX & SWT 0
M Swing JPanel flüssig verschieben AWT, Swing, JavaFX & SWT 5
G Nur ein JPanel wird angezeigt AWT, Swing, JavaFX & SWT 9
kilopack15 JPanel im laufenden Zustand einfärben AWT, Swing, JavaFX & SWT 2
kilopack15 JPanel Farbverwaltung AWT, Swing, JavaFX & SWT 1
A JScrollPane soll JPanel mit JButtons enthalten und eine Scollbar anzeigen AWT, Swing, JavaFX & SWT 1
A Swing JLabels in einer ForEach Schleife an den JPanel anheften (UNO Netzwerkspiel) AWT, Swing, JavaFX & SWT 1
L JPanel zeichnet im Konstrukter erzeugten Hintergrund nicht AWT, Swing, JavaFX & SWT 10
Java_RY wie kann ich auf JButtons in einem JPanel zugreifen AWT, Swing, JavaFX & SWT 3
F Zeichnung einem JPanel im Layoutmanager zuweisen AWT, Swing, JavaFX & SWT 3
Meeresgott Swing Umgang mit JPanel AWT, Swing, JavaFX & SWT 4
R 2D-Grafik PNG Bild per Graphics auf JPanel AWT, Swing, JavaFX & SWT 9
K JPanel Bilder bei Windows nicht darstellbar AWT, Swing, JavaFX & SWT 6
J Swing Zeichenfläche im JPanel des Haupfenster anzeigen lassen AWT, Swing, JavaFX & SWT 4
A Swing JPanel zeigt Buttons nicht an AWT, Swing, JavaFX & SWT 4
R JPanel überzeichnet alles? AWT, Swing, JavaFX & SWT 1
D Von JPanel auf anderes JPanel zugreifen AWT, Swing, JavaFX & SWT 9
L Swing Teile eines JPanel in eigene Klasse auslagern AWT, Swing, JavaFX & SWT 3
I JPanel - Verwaltung/ Anordnung AWT, Swing, JavaFX & SWT 4
T JComponents zur Laufzeit auf JPanel darstellen AWT, Swing, JavaFX & SWT 10
F Java Swing Rechteck in JPanel zeichnen AWT, Swing, JavaFX & SWT 7
J Linien auf JPanel zeichnen AWT, Swing, JavaFX & SWT 3
L ImageIcon auf JPanel wird nicht angezeigt(keiner Fehlermeldung) AWT, Swing, JavaFX & SWT 11
M Swing JPanel innerhalb eines Frames verschieben AWT, Swing, JavaFX & SWT 3
T JTextField Array im JPanel wird nicht komplett angezeigt AWT, Swing, JavaFX & SWT 7
K Swing JPanel ueber komplette Form legen AWT, Swing, JavaFX & SWT 1
W Swing Größenänderung vom JPanel im JScrollPane und anschließendes positionieren AWT, Swing, JavaFX & SWT 2
R Komponenten von JPanel bleiben unsichtbar AWT, Swing, JavaFX & SWT 2
O JTabeddpane aber jedes JPanel als eigene Klasse anlegen AWT, Swing, JavaFX & SWT 7
llabusch Linien in JPanel zeichnen AWT, Swing, JavaFX & SWT 6
I (JPanel) paintComponent mit Zeitverschiebung (Sleep/Wait) AWT, Swing, JavaFX & SWT 1
H Netbeans Designer: Probleme mit JPanel und JFrame AWT, Swing, JavaFX & SWT 2
S jpanel anchor bottom AWT, Swing, JavaFX & SWT 1
thobren Swing Im JPanel wird nur TextArea gelöscht AWT, Swing, JavaFX & SWT 13
A JPanel größe verändern AWT, Swing, JavaFX & SWT 4
G JPanel komponente Löschen AWT, Swing, JavaFX & SWT 7
F JPanel "verschmelzen" GridLayout AWT, Swing, JavaFX & SWT 10

Ähnliche Java Themen

Neue Themen


Oben