Problem beim erstellen eines JPanel in einem JFrame

Protex

Mitglied
hi, ich würde gerne in einer JFrame einen JPanel setzen. Da ich in der JPanel div. operationen möglich sein sollen dachte ich mir ich schreibe ne klasse "ZeichneBrett" und implementiere in diese klasse die gewünschten listener.. aber wenn ich dann in der main methode die klasse "ZeichneBrett" aufrufe erscheint gar nichts..

Dies wäre der Quelltext:
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class GehVersuch {

	
	public static class ZeichneBrett extends JPanel implements MouseListener, MouseMotionListener{
		
		JLabel label;
		
		public void raster(){
			
			JPanel panel = new JPanel();
			label = new JLabel("Hier sollen mal die Koordinaten stehen");
			
			
			panel.setLayout(new SpringLayout());
			SpringLayout layout = new SpringLayout();
			
			panel.add(label);
			layout.putConstraint(SpringLayout.EAST, label, 10, SpringLayout.EAST, panel);
			
			panel.addMouseListener(this);
			panel.addMouseMotionListener(this);
			
			panel.setSize(600, 400);
			panel.setVisible(true);
			
		}	
				
		
		
		public void mouseClicked(MouseEvent e){			
		}
		public void mouseReleased(MouseEvent e){			
		}
		public void mousePressed(MouseEvent e){			
		}
		public void mouseExited(MouseEvent e){			
		}
		public void mouseEntered(MouseEvent e){			
		}
		public void mouseDragged(MouseEvent e){		
		}
		public void mouseMoved(MouseEvent e){
			
			int x = e.getX();
			int y = e.getY();
			
			label.setText("x: " + x + " y: " + y);
		
		}
	}	
	
	public static void main(String[] args){
		
		JFrame frame = new JFrame("Hauptfenster");
		ZeichneBrett brett = new ZeichneBrett();
		frame.setLayout(null);

		brett.setBounds(0, 0, 600, 400);
		
		frame.add(brett);
		
		
		frame.pack();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);		
	}
}

ne ahnung was ich hier falsch mache?
 

diggaa1984

Top Contributor
joa,

in raster() folgendes am Ende aufrufen:
Java:
panel.setPreferredSize(new Dimension(600, 400)); //statt setSize
this.add(panel); //fuegt panel der Instanzt von ZeichneBrett hinzu

und in der main fehlte schlichtweg der Aufruf zum Rastern, allerdings kannst du da auch die layout-anweisungen rausnehmen.

Java:
public static void main(String[] args){
        
        JFrame frame = new JFrame("Hauptfenster");
        ZeichneBrett brett = new ZeichneBrett();

        brett.raster();
        frame.add(brett);
        
        
        frame.pack();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);     
}

Besser wäre es aber gleich noch, pro Klasse eine Datei anzulegen und nicht mit static zu hantieren :)
 
Zuletzt bearbeitet:
C

Camino

Gast
Ich denke, da sind mehrere grundsätzliche Fehler.

Du erstellst in der main-Methode einen JFrame und ein ZeichneBrett, welches du dem JFrame hinzufügst. ZeichneBrett ist von JPanel abgeleitet (da sist auch richtig so), aber es gibt keinen Konstruktor für ZeichneBrett. Stattdessen gibt es eine Methode raster, in welcher ein weiteres JPanel erstellt wird, welches aber nie erscheint, da dir Methode raster nie aufgerufen wird.

An deiner Stelle würde ich erstmal das Panel im Konstruktor der Klasse ZeichneBrett erstellen und dann dem JFrame hinzufügen. Dem JFrame würde ich auch nicht das null-Layout verpassen, sondern das JPanel einfach so hinzufügen. Landet dann im CENTER-Bereich des Frames.
 

Protex

Mitglied
hi :) danke :)

ich hab das jetzt einwenig umgeändert, bin aber auf weitere hindernisse gestoßen.. :-/
ich kann die hintergrundfarbe, der methode rasterZeichnen nicht ändern.. sie ist immer grau...
und wenn ich panel.getWidth() oder .getHeight() eingebe, bekomme ich als rückgabe wert 0..

eine frage habe ich noch, die frage der fragen: wie kann ich die einzelnen linien segmente anwählen? also das raster...
muss ich da einen mouselistener dran hängen irgendwie?
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class GehVersuch {

	
	public static class ZeichneBrett extends JPanel implements MouseListener, MouseMotionListener{
		
		JLabel label;
		Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
		
		public void raster(){
					
			JPanel panel = new JPanel();
			label = new JLabel("Hier sollen mal die Koordinaten stehen");
			JLabel label2 = new JLabel();
			panel.setLayout(null);
			panel.setBackground(Color.white);
			rasterZeichnen raster = new rasterZeichnen();
			
			label.setBounds(525,380,100,20);
			panel.add(label);
			
			panel.addMouseListener(this);
			panel.addMouseMotionListener(this);
			
			panel.setPreferredSize(new Dimension(600, 400));
			this.add(panel);
			
			int x = panel.getWidth();   // ich bekomme für x und y = 0
			int y = panel.getHeight();
			
			label2.setText("Breite/Höhe = " + x + "/" + y);
			label2.setBounds(5,0,100,20);
			panel.add(label2);
			
			raster.setBounds(0, 0, 600, 400);
			panel.add(raster);
			
			
			panel.setVisible(true);
			
		}	
				
		
		
		public void mouseClicked(MouseEvent e){			
		}
		public void mouseReleased(MouseEvent e){			
		}
		public void mousePressed(MouseEvent e){			
		}
		public void mouseExited(MouseEvent e){			
		}
		public void mouseEntered(MouseEvent e){			
		}
		public void mouseDragged(MouseEvent e){		
		}
		public void mouseMoved(MouseEvent e){
			
			int x = e.getX();
			int y = e.getY();
			
			label.setText("x: " + x + " y: " + y);
		
		}
		
		class rasterZeichnen extends JPanel{
			
			public void paintComponent(Graphics g){
				
				super.paintComponents(g);
				super.setBackground(Color.white);	// kann Hintergrundfarbe nicht ändern
			
				int rasterX = 20;
				int rasterY = 20;
			
				for(int x=0; x <= d.width; x = x + rasterX){
					for(int y=0; y <= d.height; y = y + rasterY){
					
						g.drawLine(x, y, x, y);	
					}			
				}
			}
		}
	}	
	
	public static void main(String[] args){
		
		JFrame frame = new JFrame("Hauptfenster");
		ZeichneBrett brett = new ZeichneBrett();
		
		
		brett.raster();		
		frame.add(brett);

				
		frame.pack();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);
		frame.setLocationRelativeTo(null);
	}
}
 
C

Camino

Gast
Noch ein paar Tipps zu deinem Code:

Deine Klasse ZeichneBrett erbt ja schon von JPanel, ist also quasi selbst eins. Das heisst, du bräuchtest in deiner Klasse ZeichneBrett eigentlich gar keine neues JPAnel erstellen, sondern könntest direkt deine Komponenten zu ZeichneBrett hinzufügen. Und das static würdeich bei der Klasse auch rausnehmen.

Und ich würde dir auch raten, deine Klassen in eigene Dateien zu stecken, dann wird das vielleicht auch übersichtlicher (für dich und auch für uns). Vermutlich kommt da in Zukunft ja auch noch einiges an Code dazu...
 
Zuletzt bearbeitet von einem Moderator:

beastofchaos

Bekanntes Mitglied
Also, um sowas zu prüfen, brauchst du nur einen MouseListener, der in der Methode mousePressed, die Koordinaten der Maus mit denen der Linien vergleicht und dann entsprechend ietwas macht. So eine Linie "auswählen" geht theoretisch nicht, da es ja keine eigene Komponente ist. Da gäbs ein paar Ideen bei mir, weil ich selber grad ein riesiges Grafikprogramm schreibe, aber ich rate dir nochmal, deinen Code zu überarbeiten, ein paar Beispiele zu machst, wo alles leicht zu lösen ist, damit du ein "gefühl" für Java bekommst. Man kann dir hier nicht immer sagen, was man beim Code noch besser machen kann ;)

Und wenn du genügend Tutorials angeschaut und genug getestet hast, kommst du wieder als der weise Yedi ;)

Gruß, Thomas
 

Protex

Mitglied
@Camino: hab das noch nicht so ganz raus mit dem vererben und so.. aber werd ich beherzigen :)
@beastofchaos: ja.. hast recht.. leider ist das teil meiner bak arbeit, scheint als habe ich mir da etwas viel vorgenommen

danke trotzdem
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Swing JTree Problem beim erstellen der Knoten AWT, Swing, JavaFX & SWT 0
D Problem beim Erstellen eines GridBagLayouts AWT, Swing, JavaFX & SWT 3
TheWhiteShadow JavaFX ListView Problem beim Entfernen von Elementen AWT, Swing, JavaFX & SWT 1
K JavaFX Resizing-Problem beim BorderLayout (Center Component) beim Arbeiten mit mehreren FXMLs AWT, Swing, JavaFX & SWT 2
L JavaFX Problem beim Aufrufen einer Methode AWT, Swing, JavaFX & SWT 5
I 2D-Grafik Problem beim Ändern der Farbe eine 2d Objekts AWT, Swing, JavaFX & SWT 3
7 JavaFX Problem beim Zeichnen eines Dreiecks in einem GUI AWT, Swing, JavaFX & SWT 6
N Swing Problem beim Scrollen mit JScrollPane AWT, Swing, JavaFX & SWT 6
N Swing CardLayout: Problem beim Wechsel zwischen den JPanels AWT, Swing, JavaFX & SWT 3
T Problem beim Zeichnen von Rechteck AWT, Swing, JavaFX & SWT 3
S Anordnung von GUI-Komponenten mit LayouManger (Problem beim anzeigen von JTextField) AWT, Swing, JavaFX & SWT 5
A Swing Problem beim Neuerstellen einer Node AWT, Swing, JavaFX & SWT 4
bluerob Problem beim Image zeichnen via andere Klasse AWT, Swing, JavaFX & SWT 7
B Swing Problem beim ActionListener AWT, Swing, JavaFX & SWT 5
K Swing Problem beim Zeichnen von Kreisen AWT, Swing, JavaFX & SWT 4
K JButton Problem beim Schriftfarbe Ändern AWT, Swing, JavaFX & SWT 2
R Problem beim Anzeigen von Bildern auf JInternalFrame AWT, Swing, JavaFX & SWT 6
D 2D-Grafik Problem beim Drucken eines Grafik-Objekts AWT, Swing, JavaFX & SWT 2
M Problem beim Eventhandling AWT, Swing, JavaFX & SWT 5
B Problem beim laden von Bild mit getResource() AWT, Swing, JavaFX & SWT 3
T JSpinner in JTable: Problem beim Auslesen, funktioniert erst beim Zellwechsel AWT, Swing, JavaFX & SWT 7
H Thread-Problem mit der Darstellung beim Sperren des Fensters AWT, Swing, JavaFX & SWT 2
C Performance-Problem beim Überschreiben von paintComponent() AWT, Swing, JavaFX & SWT 2
M Problem beim Zeichnen mit Path2D AWT, Swing, JavaFX & SWT 4
F Swing JTable: Problem beim zeile löschen AWT, Swing, JavaFX & SWT 3
G Problem beim setzen des Fokus AWT, Swing, JavaFX & SWT 4
Z Problem beim JTextField AWT, Swing, JavaFX & SWT 5
C Swing Problem beim 2. Öffnen eines JFrames AWT, Swing, JavaFX & SWT 9
1 Java.awt.Robot Problem beim Shift-Druck AWT, Swing, JavaFX & SWT 5
B Swing Problem beim Elemente zu JList hinzufügen AWT, Swing, JavaFX & SWT 5
F Problem beim Positionieren von Icon und Text in Button AWT, Swing, JavaFX & SWT 2
Developer_X Swing Problem beim "rezeichnen" -> Überzeichnen der Komponente AWT, Swing, JavaFX & SWT 8
N SWT Einfaches Problem beim Layout AWT, Swing, JavaFX & SWT 8
N Swing Problem beim Einlesen von Jtable in Array AWT, Swing, JavaFX & SWT 5
W Swing Problem beim Passwort Dialog AWT, Swing, JavaFX & SWT 4
C Problem mit Swing Application Framework - Projekt beim AWT, Swing, JavaFX & SWT 2
F kleines problem beim suchen in einem String AWT, Swing, JavaFX & SWT 15
A Problem beim Setzen von JPanels AWT, Swing, JavaFX & SWT 4
P Problem beim Linien ziehen! AWT, Swing, JavaFX & SWT 12
S Problem beim Anpassen vom GridBagLayout AWT, Swing, JavaFX & SWT 10
H Adressbuch - Problem beim Speichern der Eingabe AWT, Swing, JavaFX & SWT 5
A Problem mit der Seiteneinrichtung beim Drucken AWT, Swing, JavaFX & SWT 7
P Bug in Java? - Problem beim Ändern von Spaltentiteln AWT, Swing, JavaFX & SWT 2
I Layout Problem beim Skalieren AWT, Swing, JavaFX & SWT 3
S Problem beim implementerien von ActionListener AWT, Swing, JavaFX & SWT 4
Y Problem beim Drucken AWT, Swing, JavaFX & SWT 2
A Problem beim Import! AWT, Swing, JavaFX & SWT 2
M Problem beim Einsatz von ScrollPane (Fenster spielt verrückt AWT, Swing, JavaFX & SWT 2
H Problem beim zeichen eines TimeSeriesChart mit jfreechart AWT, Swing, JavaFX & SWT 5
Z Und schon wieder die Linien (Problem beim überzeichnen) AWT, Swing, JavaFX & SWT 4
W Problem beim neuzeichnen eines Rechteckes (SWT) AWT, Swing, JavaFX & SWT 2
J Problem beim Multi-Threading mit einem JDialog AWT, Swing, JavaFX & SWT 2
J Problem mit Alpha-Wert beim Button AWT, Swing, JavaFX & SWT 3
P Problem beim Zeichnen auf ein BufferedImage AWT, Swing, JavaFX & SWT 4
F Problem mit geänderten AttributSet beim StyledDocument AWT, Swing, JavaFX & SWT 4
B BorderLayout/JSplitPane Problem beim Ausrichten AWT, Swing, JavaFX & SWT 5
C Problem beim Ausführen von Thread per Button AWT, Swing, JavaFX & SWT 2
S Problem beim Image laden AWT, Swing, JavaFX & SWT 4
A Problem beim Neuzeichnen AWT, Swing, JavaFX & SWT 2
V Problem beim drucken AWT, Swing, JavaFX & SWT 4
D Problem beim Update von unsichtbaren JComponents mit Timern AWT, Swing, JavaFX & SWT 5
S Problem beim Umbenennen von MP3s AWT, Swing, JavaFX & SWT 10
O Problem beim Umwandeln eines Applets in eine Applikation AWT, Swing, JavaFX & SWT 15
T Problem beim Laden von Bildern AWT, Swing, JavaFX & SWT 14
G Problem mit der Anzeige von jLabel. Unlesbar wenn der Text geändert wird. AWT, Swing, JavaFX & SWT 28
H 2D-Grafik Problem mit Paint AWT, Swing, JavaFX & SWT 1
S Layout - Problem AWT, Swing, JavaFX & SWT 1
Tassos JavaFX/Problem mit der Maussteuerung in Stackpane AWT, Swing, JavaFX & SWT 7
sserio Java Fx - Problem AWT, Swing, JavaFX & SWT 3
A Problem Spiel auf Panel der GUI zu bringen AWT, Swing, JavaFX & SWT 1
A JavaFX Controller Problem AWT, Swing, JavaFX & SWT 1
E LayoutManager Welcher Layout-Mix löst mein Problem? AWT, Swing, JavaFX & SWT 3
Umb3rus JavaFX Problem mit PropertyValueFactory: can not read from unreadable property AWT, Swing, JavaFX & SWT 1
T Problem mit paintComponent() AWT, Swing, JavaFX & SWT 17
AmsananKING Java Menü-Problem AWT, Swing, JavaFX & SWT 1
G Instance OF Problem AWT, Swing, JavaFX & SWT 9
FrittenFritze Ein Problem mit der CSSBox, die Größe wird nicht angepasst AWT, Swing, JavaFX & SWT 5
M Problem mit dem Anzeigen von Frames im Vordergrund AWT, Swing, JavaFX & SWT 5
Badebay Problem mit JButton AWT, Swing, JavaFX & SWT 2
newJavaGeek Grid-Layout problem AWT, Swing, JavaFX & SWT 7
J JavaFX Löschen im Tabelview macht Problem AWT, Swing, JavaFX & SWT 15
JavaTalksToMe JavaFx ExekutorService Problem AWT, Swing, JavaFX & SWT 2
Zrebna Problem bei Eventhandling (Value soll nach jedem erneutem Klick gelöscht werden) AWT, Swing, JavaFX & SWT 4
B Problem mit JavaFX AWT, Swing, JavaFX & SWT 5
J css Problem AWT, Swing, JavaFX & SWT 5
B JavaFX habe mein Problem fett markiert AWT, Swing, JavaFX & SWT 2
A Swing Filter-Problem AWT, Swing, JavaFX & SWT 1
temi JavaFX Problem mit IntelliJ und JavaFx 11 unter XUbuntu AWT, Swing, JavaFX & SWT 3
L Java FX Problem mit Ubuntu 18 und JavaFx AWT, Swing, JavaFX & SWT 27
H JTable TableCellEditor-Problem AWT, Swing, JavaFX & SWT 0
kodela Swing Problem mit Warten-Dialog AWT, Swing, JavaFX & SWT 16
B JavaFx Scene Builder Problem AWT, Swing, JavaFX & SWT 2
B [Problem] Java öffnet Word-Datein nicht AWT, Swing, JavaFX & SWT 14
T DataBinding Problem AWT, Swing, JavaFX & SWT 5
Blender3D Problem mit € Symbol Font Gotham Windows 10 Swing AWT, Swing, JavaFX & SWT 11
T Problem mit JTable Sortierung AWT, Swing, JavaFX & SWT 2
J Problem mit Platfrom run later AWT, Swing, JavaFX & SWT 15
J Problem mit Platfrom run later AWT, Swing, JavaFX & SWT 0
D Swing SwingUtils / Thread Problem AWT, Swing, JavaFX & SWT 3
T Swing Problem mit Datum und FormattedTextField AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben