JPanel zeichnet nicht

newbie2009

Bekanntes Mitglied
Java:
		funktionen=new JPanel(){
			
			final Font font = new Font("Monospaced",Font.BOLD,199);
			protected void paintCompenent(Graphics g){
				
				super.paintComponent(g);
				g.setFont(font);
				g.setColor(Color.RED);
				g.drawLine(130, 130, 149, 129);
			}
		};


	funktionen.setBackground(Color.BLUE);
		funktionen.add(reset);
		funktionen.add(solve);
		funktionen.add(ok);
		
		
		
		
		add(spiel);
		
		add(funktionen);
hmm irgendwie zeichnet der keine linie auf dem Panel woran könnte es liegen?:rtfm:
und in diesem zusammenhang ma eine Frage wenn ich ein Frame habe, kann ich darauf ein gitter zeichnen lassen oder brauche ich immer einen panel.
 
Zuletzt bearbeitet:
tatsächlich 😀 😳
ok ein tippfehler, aber bei gelegenheit trotzdem zwei Fragem, warum hat dieser aufruf keine Auswirkungen ? Manchmal gehts und manchmal nicht🙂
2.te Frage wenn ich die drawMethode überschreibe zeichnet er zwar, aber an bestimmte koordinate, sprich wenn ich das Fenster verkleiner oder vergrößer bleibt der Schriftzug an dieser Koordinate.
Fürs Frame gibt es ja den Aufruf pack(); wie kann ich das bei dem Panel machen ?



Java:
funktionen.setBackground(Color.BLUE);
 
Zuletzt bearbeitet:
Du setzt eine Farbe für das Panel und quasi danach zeichnest du selbst.
Somit ist die gesetzte Farbe überschrieben

Du kannst dir Koordinaten auch prozentual errechnen.
Also anstatt x-koordinate 130, könntest du auch z.B. 1/5 der Panelbreite nehmen.
In der paintComponent kannst du getWidth/getHeight benutzen.
Java:
g.drawLine(getWidth()/5, 130, 149, 129);

Hoffe das hilft dir weiter
 
Zuletzt bearbeitet:
Du setzt eine Farbe für das Panel und quasi danach zeichnest du selbst.
Somit ist die gesetzte Farbe überschrieben

Du kannst dir Koordinaten auch prozentual errechnen.
Also anstatt x-koordinate 130, könntest du auch z.B. 1/5 der Panelbreite nehmen.
In der paintComponent kannst du getWidth/getHeight benutzen.
Java:
g.drawLine(getWidth()/5, 130, 149, 129);

Hoffe das hilft dir weiter


ok das hilft mir schon mal viel weiter🙂 nur das mit dem Jpanel habe ich nicht ganz begriffen 😛
 
Noch ein Nachtrag zur Eingangsfrage: Wenn man
Code:
@Override
protected void paintCompenent(Graphics g){
...
}
schreibt, würde er durch das "Override" an dieser Stelle meckern, dass dort ja gar nichts wirklich überschrieben wird. Das sollte man immer davorschreiben, wenn man eine Methode überschreiben will, eben um solche Fehler zu vermeiden.
 

Zurück
Oben