zeichnen auf Canvas will nicht klappen

Status
Nicht offen für weitere Antworten.

Fr3eMaN

Mitglied
Hallo

Code:
import java.awt.*;

public class Main extends Canvas{
    
    Canvas can;
    Frame frame;
    
    @Override
    public void paint(Graphics g){
        g.setColor(Color.BLACK);
        g.drawString("gemalt", 1, 1);
        System.out.println("gemacht");
    }
    
    
    public void init(){
        can = new Canvas();
        frame = new Frame("Canvas");
        frame.setSize(400, 400);
        frame.add(can);
        can.setBackground(Color.ORANGE);
        frame.setVisible(true);
           
    }

    public static void main(String[] args) {
        Main m = new Main();
        m.init();
    }

}

Ich sehe keinen fehler und ich weis nicht warum auf dem Canvas nichts gezeichnet wird. Eigentlich müsste doch die paint Methode automatisch aufgerufen werden. Was ist hier los. Danke euch
 

blackMamba

Mitglied
was funktioniert denn genau nicht?
Also ich habe das mal ausprobiert, da hat mein Compiler bemaengelt, dass du die Klasse Main genannt hast.
Ich hab die mal umgenannt auf Zeichnen, und dann wird eine orange/gelbe Box 400*400 dargestellt.
 

Leroy42

Top Contributor
blackMamba hat gesagt.:
da hat mein Compiler bemaengelt, dass du die Klasse Main genannt hast.

Wieso das denn? Er kann die Klasse doch benennen wie er will.

Allerdings bewirkt
Code:
g.drawString("gemalt", 1, 1);
ziemlich wenig, da du dem gesamten String gerade mal 4 Pixel bereitstellst um sich zu schreiben! :bae:
 

Fr3eMaN

Mitglied
hmm, soll ich die font größer machen oder wie? ich dachte die drawstring funktion sieht folgendermaßen aus
Code:
drawString(String str, int posx, int posy)
kannst du mir mal auf die Sprünge helfen was ich da zu ändern habe
 

blackMamba

Mitglied
deine Methode init rufst du ja auch in der main Methode auf mit m.init()
So was musst du auch mit der Methode paint machen. Denn die rufst du weder in der main Methode, noch in der init() Methode auf. Und der compiler muss ja irgendwie wissen, was er alles aufrufen und verarbeiten muss.
Wenn du paint einfügst, wird das auch funktionieren. Wobei ich mir nicht sicher bin, in wie weit ein frame mit der Klasse Graphics kompatibel ist.
 

Fr3eMaN

Mitglied
nene ich glaub da musst du nochmal wo nachlesen, die paint Methode wird automatisch aufgerufen.
Mitlerweile glaub ich wirklich das ds gar nicht geht. Das komische ist wenn ich das ganze nur auf das Fenster zeichnen lasse ohne den canvas geht es...sehr seltsam.
Falls jemand eine Lösung parat hat wäre es sehr sehr toll wenn er das hier vorzeigen würde, ansonsten kann jemand ne gute alternative zu nem Canvas nennen, die auch zuverlässig ist, evtl sogar in awt, oder ich müsste einfach in Swing arbeiten.
 

Marco13

Top Contributor
:!: :?: :!: :?:
Code:
import java.awt.*;


class DerCanvasDerMaltWasErMalenSoll extends Canvas
{
    @Override
    public void paint(Graphics g)
    {
        g.setColor(Color.BLACK);
        g.drawString("gemalt", 20, 20);
        System.out.println("gemacht");
    }
}


public class Main2
{

    Canvas can;
    Frame frame;

    public void init()
    {
        can = new DerCanvasDerMaltWasErMalenSoll();
        frame = new Frame("Canvas");
        frame.setSize(400, 400);
        frame.add(can);
        can.setBackground(Color.ORANGE);
        frame.setVisible(true);

    }

    public static void main(String[] args)
    {
        Main2 m = new Main2();
        m.init();
    }

}
 

Fr3eMaN

Mitglied
danke dir, bin im selben Moment auf die selbe Idee gekommen!
Code:
import java.awt.*;

public class Main extends Canvas{
    
    Frame frame;
    
 
    @Override
    public void paint(Graphics g){
        g.setColor(Color.BLACK);
        g.drawString("gemalt", 100, 100);
    }
      
    public void init(){
        Main e = new Main();  
        frame = new Frame("Canvas");
        frame.setSize(400, 400);
        frame.add(e);
        e.setBackground(Color.BLUE);
        frame.setVisible(true);
        
           
    }

    public static void main(String[] args) {
        Main m = new Main();
        m.init();
    }

}

Super das es jetzt klappt. danke
 

blackMamba

Mitglied
@Fr3eMaN:
>nene ich glaub da musst du nochmal wo nachlesen, die paint Methode wird automatisch aufgerufen.

jo recht hast, sorry for trouble making
 

Kanitrino

Bekanntes Mitglied
Mal ne Zusatzfrage : Wir die paint()-Methode durch setVisible(true) aufgerufen oder bezieht sich das auf den Rahmen ? Wie ist das dann bei Schleifen ?
 

Fr3eMaN

Mitglied
die paint Methode wird automatisch aufgerufen, man hat aber die möglichkeit die routinen darin selbst zu schreiben, deshalb schreibt man extra nochmal paint.
Der befehl setvisible(true) bezieht sich auf das frame , und die frame variable bezoeht sch auf die awt Klasse Frame, was ein Fenster darstellt.Demzufolge setzt man durch de befehl die sichtbarkeit des fensters auf wahr (true) oder falsch(false)
 

Kanitrino

Bekanntes Mitglied
Ich hab' da nämlich ein Problem : Der unten stehende Code zeichnet nicht.

Die Print-Anweisungen bis "run" werden auch ausgeführt, das folgende "repaint()" wird aber nicht ausgeführt. Weder wird das in der paint()-Methode beschriebene Quadrat gemalt, noch wird das Wort"paint" geschrieben.

Wieso klappt das nicht ?

Code:
import java.awt.*;
import javax.swing.*;

public class Muschel extends JFrame
{
	Tableau tableau;

	public Muschel()
	{
		setSize(150, 150);
		tableau = new Tableau();
	}

	public static void main(String[] args)
	{
		System.out.println("main");
		Muschel muschel 	= new Muschel();
		muschel.setVisible(true);
	}
}


class Tableau extends JPanel implements Runnable
{
		Thread running;

		public Tableau()
		{
			System.out.println("Konstruktor");
			running = new Thread(this);
			running.start();
		}

		public void run()
		{
			System.out.println("run");
			repaint();
		}

	public void paint (Graphics g)
	{
		System.out.println("paint");
		g.setColor(Color.blue);
		g.fillRect(50, 50, 50, 50);
	}
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Rechteck zeichnen mit Canvas Java Basics - Anfänger-Themen 7
U Zeichnen mit Canvas. Java Basics - Anfänger-Themen 5
S NetBeans 6.0.1 / Zeichnen auf Canvas Java Basics - Anfänger-Themen 8
C Problem mit Zeichnen auf einer extends Canvas Class... Java Basics - Anfänger-Themen 2
J SWING UI Designer und zeichnen Java Basics - Anfänger-Themen 4
luggas89 Mit Jframe live zeichnen Java Basics - Anfänger-Themen 4
K 3D Fläche Zeichnen Java Basics - Anfänger-Themen 2
J Bild auf Hintergrundbild zeichnen Java Basics - Anfänger-Themen 5
R Iterativ zeichnen Java Basics - Anfänger-Themen 1
T Java Swing - Dreieck zeichnen mit verschiedenen Variablen Java Basics - Anfänger-Themen 8
P JFrame, Linien zeichnen, MouseListener Java Basics - Anfänger-Themen 2
KogoroMori21 Mit einer Schleife eine Treppe zeichnen Java Basics - Anfänger-Themen 29
V Speicherzustand zeichnen Java Basics - Anfänger-Themen 0
O Klappt nicht: Ein Panel neu zeichnen Java Basics - Anfänger-Themen 3
CptK Interface Bilder mit Graphics g zeichnen Java Basics - Anfänger-Themen 7
B Java JFrame zeichnen Java Basics - Anfänger-Themen 4
Mosquera f(x)=x² zeichnen Java Basics - Anfänger-Themen 5
J Graphen in Java zeichnen Java Basics - Anfänger-Themen 11
L Anfängerin möchte Linie zeichnen Java Basics - Anfänger-Themen 8
D JPanel mehrere Formen zeichnen Java Basics - Anfänger-Themen 5
S Zeichnen mit Wiederholungen Java Basics - Anfänger-Themen 12
B Wie kann ich Linien rekursiv zeichnen? Java Basics - Anfänger-Themen 4
P Einen String mittig zeichnen? Java Basics - Anfänger-Themen 1
T Koordinatensystem zeichnen - Variablen merken? Quadratische Funktion zeichnen? Java Basics - Anfänger-Themen 5
M Ein Bild durch Objekterzeugung zeichnen Java Basics - Anfänger-Themen 5
W Wie kann ich in Java eine Kurve aus Punkten zeichnen? Java Basics - Anfänger-Themen 25
snipesss Linie zeichnen ohne extra Klasse? Java Basics - Anfänger-Themen 3
C Umrisse von Bilddateien mithilfe Polygonen zeichnen Java Basics - Anfänger-Themen 5
G Aus einem Code ein Sequenzdiagramm zeichnen? Java Basics - Anfänger-Themen 1
K Rechtecke rekursiv zeichnen Java Basics - Anfänger-Themen 20
V Quadrate rekursiv zeichnen Java Basics - Anfänger-Themen 7
B Java Graphen zeichnen - Brauche Hilfe Java Basics - Anfänger-Themen 9
C Schleifenaufgabe - Molekül zeichnen Java Basics - Anfänger-Themen 6
K Ungenauigkeit beim Zeichnen von Funktionen Java Basics - Anfänger-Themen 6
H Linie zeichnen... Java Basics - Anfänger-Themen 16
N Treppe zeichnen Java Basics - Anfänger-Themen 1
M Quadrat zeichnen einfach bitte! Java Basics - Anfänger-Themen 2
P Shape Zeichnen klappt nicht - einlesen der Breite/Höhe schon Java Basics - Anfänger-Themen 1
M in Java zeichnen Java Basics - Anfänger-Themen 2
J JLabel Icon neu zeichnen Java Basics - Anfänger-Themen 2
D Zeichnen, Schleifen Java Basics - Anfänger-Themen 7
S Zeichnen , Schleifen Java Basics - Anfänger-Themen 4
S Rechteck zeichnen Java Basics - Anfänger-Themen 2
S Ein Graphics Obejct mehrmals mit denselben Eigenschaften zeichnen lassen?!?!? Java Basics - Anfänger-Themen 4
S Wo beginnt ein Draw String zu zeichnen. Java Basics - Anfänger-Themen 4
S Paint Anwendung: Freihandlinien zeichnen Java Basics - Anfänger-Themen 4
llabusch Layout neu zeichnen lassen Java Basics - Anfänger-Themen 2
A Histogramm zeichnen Java Basics - Anfänger-Themen 2
S Punkt in Java zeichnen Java Basics - Anfänger-Themen 14
E Dreieck zeichnen Java Basics - Anfänger-Themen 3
gamebreiti Methoden JPanel nach clearAll() und add neu zeichnen Java Basics - Anfänger-Themen 1
T Baum mit Turtle zeichnen Java Basics - Anfänger-Themen 2
C Hilfe beim Zeichnen Java Basics - Anfänger-Themen 8
D Haus zeichnen Java Basics - Anfänger-Themen 4
K Methoden Objekt auf JFrame zeichnen Java Basics - Anfänger-Themen 16
H 27 Kreise Zeichnen Java Applet Java Basics - Anfänger-Themen 2
S Problem mit "Zeichnen auf Kommando" Java Basics - Anfänger-Themen 2
M Double Punkte Zeichnen Java Basics - Anfänger-Themen 7
S Funktionen zeichnen Java Basics - Anfänger-Themen 2
2 Bild auf JApplet zeichnen Java Basics - Anfänger-Themen 18
R 2D Grafik zeichnen Java Basics - Anfänger-Themen 4
F Line zeichnen und Werte ändern Java Basics - Anfänger-Themen 6
B Grafik zeichnen Java Basics - Anfänger-Themen 25
B Erste Schritte Weihnachtsbaum zeichnen Java Basics - Anfänger-Themen 6
N Per Button Kreis zeichnen Java Basics - Anfänger-Themen 8
T mehrere Punkte zeichnen ohne löschung Java Basics - Anfänger-Themen 4
J Für 3 Sekunden etwas bestimmtes zeichnen Java Basics - Anfänger-Themen 8
C Kreis nach Mausklick zeichnen Java Basics - Anfänger-Themen 5
C Auf Button-Druck zeichnen Java Basics - Anfänger-Themen 2
R Methoden Zeichnen auf Button-Druck durch Paint-Methode Java Basics - Anfänger-Themen 2
D Klassen Zeichnen von Figuren mittels vorgegebener Klasse Java Basics - Anfänger-Themen 3
J Schachbrett zeichnen Java Basics - Anfänger-Themen 9
J Innerhalb der Border zeichnen Java Basics - Anfänger-Themen 9
J Hoher Speicherverbrauch beim Zeichnen von Images aus einer ArrayList Java Basics - Anfänger-Themen 10
A Blitze mit Linien zeichnen Java Basics - Anfänger-Themen 15
U Kreis um Textfelder zeichnen Java Basics - Anfänger-Themen 4
R Balkendiagramm zeichnen Java Basics - Anfänger-Themen 14
J Bild anhand von Koordinaten zeichnen Java Basics - Anfänger-Themen 10
B GUI Parkplatz zeichnen Java Basics - Anfänger-Themen 10
S Mehrere Zeichnungen zeichnen Java Basics - Anfänger-Themen 16
A Linie Zeichnen Applet mit Double Wert Java Basics - Anfänger-Themen 3
F Image übertragen und zeichnen Java Basics - Anfänger-Themen 8
P Funktion zeichnen Java Basics - Anfänger-Themen 6
Q Zeichnen außerhalb der paint-methode Java Basics - Anfänger-Themen 7
F zeichnen in JPanel Java Basics - Anfänger-Themen 7
T Transparente Bilder mit Graphics zeichnen Java Basics - Anfänger-Themen 17
T Sterne zeichnen Java Basics - Anfänger-Themen 4
M Bilder laden und zeichnen Java Basics - Anfänger-Themen 3
G Polygon in Frame zeichnen Java Basics - Anfänger-Themen 3
S X Zeichnen als Muster ausgeben Java Basics - Anfänger-Themen 5
P Kurven zeichnen Java Basics - Anfänger-Themen 5
I dauerhaftes zeichnen Java Basics - Anfänger-Themen 3
H Zeichnen in JPanel Java Basics - Anfänger-Themen 8
W Funktions-Graphen "zeichnen" Java Basics - Anfänger-Themen 2
J Bilder auf Bilder zeichnen Java Basics - Anfänger-Themen 8
I Rechteck Zeichnen Java Basics - Anfänger-Themen 9
W Zeichnen in Swing Java Basics - Anfänger-Themen 7
N Linie auf spezielle Area zeichnen Java Basics - Anfänger-Themen 9
K Auf JPanel Zeichnen Java Basics - Anfänger-Themen 8
E Frame neu Zeichnen Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben