Frage JPanel

newbie2009

Bekanntes Mitglied
hey leute mal eine Frage, einen Jpanel kann man doch nicht beschriften, höchstens einen Jlabel hinzufügen und den beschreiben oder?

weil habe so eine aufgabenstellung:Sobald der Name (als
Text) eingegeben wird, wird das Objekt (Text oder Bild) in einem JPanel angezeigt.

mfg newbie
 

Ebenius

Top Contributor
JPanel selbst stellt keinen Text dar. Entweder implementierst Du das selbst in einer eigenen Ableitung (per überschriebener [c]paintComponent(Graphics)[/c]) oder -- was in der Regel besser ist -- packst ein JLabel auf das JPanel.

Ebenius
 

newbie2009

Bekanntes Mitglied
habe ich mir schon beinahe gedacht vielen dank :)

aber habe nun das folgende problem:
ich möchte, dass auf dem JPanel gezeichnet wird, wenn der Button Suche betätigt wird.
So sieht der Code aus, sind zwar keine fehler beim kompilieren vorhanden, aber zeichnen lässt sich der String auch nicht, weiß jemand weiter?

Java:
	ausgabe.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent arg0) {
				if (lese(suchfeld.getText()) == null) {
					JFrame fehler = new JFrame("fehler");
					fehler.setSize(300, 200);
					JLabel fehlerhaft = new JLabel(
							" suchbegriff noch nicht vorhanden");
					fehler.add(fehlerhaft);
					fehler.setVisible(true);

				}
				final Object help = lese(suchfeld.getText());
				mixed=new JPanel(){
					@Override public void paintComponent(Graphics g) {
				         super.paintComponent(g);    
				         g.drawString((String)help, 120, 130);
				    }

				};
				
				suchfeld.setText((String) help);
			

			}

		});

	}
 

Ebenius

Top Contributor
Du legst ein neues Panel [c]mixed[/c] an, fügst es aber nirgends hinzu. Dein altes Panel [c]mixed[/c] lebt weiter, auch wenn Du den Wert der Variablen veränderst und das alte Panel über diese nun nicht mehr erreichst.

Ebenius
 

newbie2009

Bekanntes Mitglied
ok :) dann poste ich ma bisschen mehr code :)
Aso das mixed panel wurde schon bereits hinzugefügt und ich wollte, dass es mit der methode geändert wird.

Java:
class Myclass extends JFrame implements Map {

Myclass() {
mixed = new JPanel();
add(mixed);
} 


ausgabe.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent arg0) {
				if (lese(suchfeld.getText()) == null) {
					
 JOptionPane.showMessageDialog(null,"Der gesuchte Key ist noch nicht vorhanden",
                             "failed search ",					      
	      JOptionPane.ERROR_MESSAGE);

				}
				final Object help = lese(suchfeld.getText());
			
				
				suchfeld.setText((String) help);
				mixed=new JPanel(){

                         public void paintComponent(Graphics g) {
                            
                         g.drawString((String)help, 120, 130);
                    }


					
				};
			

			}

		});

	}

So sieht die Klasse vereinfacht aus, aber irgendwie funktioniert drawString trotzdem nicht, wenn ich Farbe ändern mache oder so geht das, aber das überschreiben der MEthode funktioniert irgendwie nicht;(
 

newbie2009

Bekanntes Mitglied
ja ok habe hier die anweisung vergessen sorry:oops:

aber auch wenn ich anschließend
Java:
add(mixed)
mache klappt es nicht.
 

Michael...

Top Contributor
aber auch wenn ich anschließend
Java:
add(mixed)
mache klappt es nicht.
Weil man einem ActionListener kein JPanel zufügen kann. Und selbst wenn Du es per add in Deinen übergeordneten Container einfügst, hängt es von dessen LayoutManager ab wie und ob es korrekt eingefügt wird. Ausserdem müsste man da vermutlich noch ein validate() auf dem Container/ der übergeordneten Komponente aufrufen.

Wenn ich das richtig verstanden habe ändert sich doch nur der String. Warum lässt Du nicht einfach ein Panel in der GUI und änderst nur dessen String, anstatt immer ein neues Panel zu erzeugen und zu versuchen in die GUI zu stecken? Ähnlich wie man es mit einem JLabel machen würde.
 

newbie2009

Bekanntes Mitglied
Java:
	ausgabe.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent arg0) {
				if (lese(suchfeld.getText()) != null) {
					final Object help = lese(suchfeld.getText());
					
					suchfeld.setText((String) help);
					mixed.setVisible(false);
					remove(mixed);
					mixed=new JPanel(){
						
						protected void paintComponent(Graphics g){
							g.setColor(Color.RED);
							
							Font neu = new Font("Monospaced",Font.PLAIN,36);
							g.setFont(neu);
							g.drawString((String)help, 50, 50);
						} 
					};
					
					add(mixed);
 
				}else{
					JOptionPane.showMessageDialog(null,"Der gesuchte Key ist noch nicht vorhanden","failed search ",JOptionPane.ERROR_MESSAGE);

				}
			
			
			
			

			}

		});

	}

So funktionierts nun, aber dein ansatz hört sich besser an

Wenn ich das richtig verstanden habe ändert sich doch nur der String. Warum lässt Du nicht einfach ein Panel in der GUI und änderst nur dessen String, anstatt immer ein neues Panel zu erzeugen und zu versuchen in die GUI zu stecken? Ähnlich wie man es mit einem JLabel machen würde.

Nur ich dachte, um den String auf einem Panel zu ändern muss, man die Methode überschreiben ?
oder habe ich es mir da wieder zu kompliziert gemacht^^
 
Zuletzt bearbeitet:

Michael...

Top Contributor
Du kannst Dir ja eine Klasse wie folgt bauen, dann kannst Du einfach per setText("bla") den Inhalt neu setzen:
Java:
class MyPanel extends JPanel {
    private String text = "";
    private Font font = new Font("Monospaced",Font.PLAIN,36);

    public void setText(String text) {
        this.text = text;
        this.repaint();
    }

    public void paintComponent(Graphics g){
        super.paintComponent(g);
        g.setColor(Color.RED);
        g.setFont(font);
        g.drawString(text, 50, 50);
    } 
}
 

newbie2009

Bekanntes Mitglied
Das Problem ist, ich würde gerne auf eine neue Klasse verzichten, und es mit einer anonymen lösen.
und ich müsste doch auch mit deiner Lösung dann jedes ma einen neuen Panel erstellen oder nich ?
 

Michael...

Top Contributor
Das Problem ist, ich würde gerne auf eine neue Klasse verzichten, und es mit einer anonymen lösen.
Das kann man - warum auch immer - machen. Dann müsste halt die Klasse in der diese anonyme Klasse erzeugt wird den String text vorhalten und ggf. ein repaint auf das Panel aufrufen.
und ich müsste doch auch mit deiner Lösung dann jedes ma einen neuen Panel erstellen oder nich ?
Nein, man müsste einfach nur setText("bla") aufrufen.
 

newbie2009

Bekanntes Mitglied
Java:
escript = new JPanel(){
		
			    private String text = "waz up ";
			    private Font font = new Font("Monospaced",Font.PLAIN,36);
			 
			    public void setText(String text) {
			        this.text = text;
			        this.repaint();
			    }
			 
			    public void paintComponent(Graphics g){
			        super.paintComponent(g);
			        g.setColor(Color.RED);
			        g.setFont(font);
			        g.drawString(text, 50, 50);
			    } 
			
			
		};
das steht im Konstruktor in der Klasse und wie rufe ich dann die Methode setText auf , wenn mein button zeichne geklickt wirD????:L

Java:
		zeichne.addActionListener(new ActionListener(){

			
			public void actionPerformed(ActionEvent e) {
				
				
			}
			
		});
 

Michael...

Top Contributor
wie rufe ich dann die Methode setText auf , wenn mein button zeichne geklickt wirD????:L
Das geht dann bei einer anonymen Klasse nicht (s. meinen letzten Post) - ausser Du verwendest JLabel statt JPanel, das besitzt eine Methode setText, die man überschreiben kann.

Mit einer anonymen Klasse sollte es so in etwa funktionieren:
Java:
...
	private String text = "";
	private JPanel escript;

	public WieAuchImmerdieKlasseHeisst() {
		...
		escript = new JPanel() {
			private Font font = new Font("Monospaced",Font.PLAIN,36);
			public void paintComponent(Graphics g){
				super.paintComponent(g);
				g.setColor(Color.RED);
				g.setFont(font);
				g.drawString(text, 50, 50);
			} 
		};
		...
	}
...
Im ActionListener kannst Du dann (sofern er sich in der selben Klasse befindet) einfach
Java:
text = "neuerText";
escript.repaint();
aufrufen
 


Schreibe deine Antwort... und nutze den </> Button, wenn du Code posten möchtest...
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Eine theoretische Frage zur Praxis - JPanel oder Canvas Java Basics - Anfänger-Themen 5
V jab ich eclipse verrückt gemacht :D ? array Jpanel, Jlabel Grafik Fehler / Frage Java Basics - Anfänger-Themen 5
A Frage zu JPanel Größenangaben Java Basics - Anfänger-Themen 2
F Frage zu JPanel und Paint Java Basics - Anfänger-Themen 5
J Frage zum Quellcode - Zusammhänge und Ablauf. Java Basics - Anfänger-Themen 2
D Erste Schritte Frage eines absoluten Anfängers Java Basics - Anfänger-Themen 3
Zrebna Frage zu Test-Driven Development (TDD) Java Basics - Anfänger-Themen 3
I Frage Thymeleaf -> Fehler ignorieren und mit "" ersetzen? Java Basics - Anfänger-Themen 15
I Frage Thymeleaf -> Prefix / Suffix ändern? Java Basics - Anfänger-Themen 11
D Rekursions Probleme / frage Java Basics - Anfänger-Themen 4
T Frage zu Parse Java Basics - Anfänger-Themen 2
H Frage an die Profis Java Basics - Anfänger-Themen 4
J Eine konzeptionelle Frage zu OOP Java Basics - Anfänger-Themen 3
P Frage zu Rekursion und Backtracking Java Basics - Anfänger-Themen 2
H Frage zur Ausgabe Java Basics - Anfänger-Themen 4
H Frage zu arithmetischen Operationen Java Basics - Anfänger-Themen 20
F Kurze Frage zu replace() Java Basics - Anfänger-Themen 19
JavaSchmecktLecker Polymorphie Frage zur Methodenüberschreibung Java Basics - Anfänger-Themen 21
J Frage zu einem "Taschenrechner" code Java Basics - Anfänger-Themen 9
B Erste Schritte Frage zu Instanzierung und Referenzen Java Basics - Anfänger-Themen 8
DoubleM Runtime.getRuntime().exec Frage Java Basics - Anfänger-Themen 2
O Frage: Formaler Typbezeichner? Java Basics - Anfänger-Themen 3
I BlueJ Queue Frage für Klausur Java Basics - Anfänger-Themen 2
N Verständnis Frage zu Variablen Java Basics - Anfänger-Themen 3
N Spezielle frage zum Comparator Java Basics - Anfänger-Themen 6
L Frage zum Array Java Basics - Anfänger-Themen 1
A Frage zum UML Design Java Basics - Anfänger-Themen 1
I Hilfe bei Klausur Frage Java Basics - Anfänger-Themen 8
izoards Drucken Frage zu FAQ Beitrag Java Basics - Anfänger-Themen 2
J Frage zu meinem Code (OOP) Java Basics - Anfänger-Themen 4
sserio Split() -> Regex Frage. Java Basics - Anfänger-Themen 7
A OCA Study Guide: 2. Frage aus Kapitel 3 Java Basics - Anfänger-Themen 9
sserio Date Library Frage Java Basics - Anfänger-Themen 9
Max246Sch Frage zu Währungsrechner Code Java Basics - Anfänger-Themen 2
sserio Frage zu HashMaps Java Basics - Anfänger-Themen 20
sserio Frage zu Threading - Multithreading Java Basics - Anfänger-Themen 2
sserio Frage zu Lambda Ausdrücken Java Basics - Anfänger-Themen 7
sserio Frage zu BigInteger Java Basics - Anfänger-Themen 1
D Frage bzgl. Enum-Handhabung Java Basics - Anfänger-Themen 16
xxx12 Frage Java Basics - Anfänger-Themen 2
I Generelle Frage zu Mikroservices (Spring Boot?), Docker... Java Basics - Anfänger-Themen 7
R Frage zu Methoden (Rückgabewert u. ohne.) Java Basics - Anfänger-Themen 2
A Frage zur programmierung Java Basics - Anfänger-Themen 12
M Frage zur Methode split der Klasse String Java Basics - Anfänger-Themen 32
R Input/Output Frage zu Java IO Java Basics - Anfänger-Themen 6
M Frage zu printWriter Java Basics - Anfänger-Themen 5
C Frage zu OLSMultipleLinearRegression Java Basics - Anfänger-Themen 31
KogoroMori21 Frage zum Euklidischen Algorithmus Java Basics - Anfänger-Themen 11
S Verständnis-Frage zu einer HÜ? Java Basics - Anfänger-Themen 1
F Frage betreff Programm mit dem man C++-Code in JAVA-Code übersetzen lassen kann Java Basics - Anfänger-Themen 2
L Frage zur Ticket Maschine Java Basics - Anfänger-Themen 1
J Frage zu OOP-Klassendiagramm Java Basics - Anfänger-Themen 8
OSchriever Frage zu Compiler Java Basics - Anfänger-Themen 8
H Frage zu Throw Exception Java Basics - Anfänger-Themen 2
TimoN11 Frage zu Java-Vererbung (Cast) Java Basics - Anfänger-Themen 5
Bademeister007 Hallo Leute ich hab eine Frage zur ArrayList Java Basics - Anfänger-Themen 8
F Frage betreff Programmierbücher zu Lagerverwaltung als Konsolenprogramm Java Basics - Anfänger-Themen 3
dieter000 Kurze Frage kann mir ejmand kurz diesen Code erklären, bzw wie man die zeilen erklärt und so Java Basics - Anfänger-Themen 1
I String.split regex Frage Java Basics - Anfänger-Themen 2
N Best Practice Frage zum MVC-Pattern Java Basics - Anfänger-Themen 2
dieter000 Frage zu einem Beispiel... Java Basics - Anfänger-Themen 5
J Frage zum Loggen Java Basics - Anfänger-Themen 18
J Methoden Frage: Array-Werte in anderer Methode ändern Java Basics - Anfänger-Themen 4
Zrebna Frage zum "Referenzen-konzept" in Java Java Basics - Anfänger-Themen 8
JD_1998 Array-Position aus einer Methode in einer anderen ausgeben (Kurze Frage) Java Basics - Anfänger-Themen 2
marcooooo Frage zu bestimmten Beispiel Java Basics - Anfänger-Themen 31
NeoLexx equals()-Methode Verständnis Frage anhand Code Beispiel Java Basics - Anfänger-Themen 22
N Input/Output Eine Frage über system.out.println. Java Basics - Anfänger-Themen 10
B Erste Schritte Learning Coding (!) Frage an erfahrene Programmierer. Java Basics - Anfänger-Themen 23
M konzeptuelle Frage: In welcher Klasse definiert man am Besten Methoden, die die Kommunikation mit dem User regeln? Java Basics - Anfänger-Themen 8
B Frage zum Code verständnis im Resultat Java Basics - Anfänger-Themen 10
C Exception-Frage Java Basics - Anfänger-Themen 3
J Eine Frage zur Schreibweise == ? : Java Basics - Anfänger-Themen 3
S Frage des Designs Java Basics - Anfänger-Themen 1
JavaTalksToMe Extends/Implements Frage Java Basics - Anfänger-Themen 3
pkm Frage zu Servletfunktion Java Basics - Anfänger-Themen 0
B Frage zur Währungsumrechnung Java Basics - Anfänger-Themen 3
S Allgemeine Frage über Generics und Vererbungen Java Basics - Anfänger-Themen 5
Kirby.exe Frage zur Verwendung von Interfaces Java Basics - Anfänger-Themen 6
D Frage zu Strings einer Exception Java Basics - Anfänger-Themen 4
L Wie frage ich ab, ob in einem Array, Werte doppelt vorkommen? Java Basics - Anfänger-Themen 4
D Frage zur IDE IntelliJ IDEA Java Basics - Anfänger-Themen 6
H Frage zum 2d Array Java Basics - Anfänger-Themen 1
N Frage zum Newton-Fraktal Java Basics - Anfänger-Themen 1
H Frage zu interfaces Java Basics - Anfänger-Themen 1
J Frage dazu Variablen klassenübergreifend zu verändern Java Basics - Anfänger-Themen 22
I Frage zu SkipList Java Basics - Anfänger-Themen 4
G Frage zu JScrollPane Java Basics - Anfänger-Themen 12
Kirby.exe Allgemeine Frage Java Basics - Anfänger-Themen 3
W Frage zu anonymen Klassen Java Basics - Anfänger-Themen 4
J Kleine Frage zu OOP Java Basics - Anfänger-Themen 371
S Frage Klasse und Objekte Java Basics - Anfänger-Themen 2
F Frage zu Iteratoren Java Basics - Anfänger-Themen 2
C Erste Schritte Frage zur ArrayList Java Basics - Anfänger-Themen 15
J Frage zur Vererbung Java Basics - Anfänger-Themen 1
H Frage zur ermittlung eines doppelte Paars aus Sotieralgorithmus Java Basics - Anfänger-Themen 4
H Frage zum Array Java Basics - Anfänger-Themen 17
G Schach -Frage 2- Maussteuerung Java Basics - Anfänger-Themen 7
G Schach in Java - Allgemeine Frage zur Architektur Java Basics - Anfänger-Themen 7
B Fachliche Frage bei Rechnungen Java Basics - Anfänger-Themen 16

Ähnliche Java Themen


Oben