cannot access Canvas

Status
Nicht offen für weitere Antworten.
D

Deutscher22

Gast
Tach, ich hatte das Problem schon letzte Woche, das kotzt mich so an. Ich habe ein Beispielprogramm und das geht, aber meins nicht.

Ich zeige erst meine nachgeschriebene Versionen,
dann das orginal, was geht.



------------------------------------------------------
------------------------------------------------------
nachgeschriebene Version
------------------------------------------------------
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class MeineCanvas extends Canvas
{
MeineCanvas()
{
setBackground(Color.black);
setForeground(Color.green);
}
public void paint(Graphics g)
{
double x,y;
int xpos,ypos;

g.translate(150,150);


g.setColor(Color.red);
g.drawLine(0,-150,0,150);
g.drawLine(-150,0,150,0);

g.drawString("-3",-150,12);
g.drawString("+3",135,12);
g.drawString("+3",4,-140);

g.setColor(new Color(255,255,0));

//Funktion ausgewählt, nichts tun
if(aktFunktion ==0)
return;

for(x=-3.0;x<=3;x+=0.005)
{
if(aktFunktion ==1)
y=Math.tan(x);
else
y=Math.pow(x,3);


xpos=(int) (x*50);
ypos=(int) (-y*50);

g.fillOval(xpos,ypos,3,3);
}
}


//Liefert die minimale Größe der Canvals
public Dimension getMinimumSize()
{
return new Dimension(300,300);
}

//Größe setzen
public Dimension getPreferredSize()
{
return getMinimumSize();
}
}
------------------------------------------------------

Compailer sagt was mit "cannot access Canvas" bei extends Canvas
------------------------------------------------------
------------------------------------------------------



------------------------------------------------------
------------------------------------------------------
orginal
------------------------------------------------------
// Datei CFunkPlotter.java

// Ein Funktionenplotter
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

// Hauptfenster von Swing-Klasse JFrame ableiten
public class CFunkPlotter extends JFrame
{
int aktFunktion = 0; // diese Variable bestimmt die
// zu zeichnende Funktion;
// Startwert 0 = keine Funktion
CMeineCanvas m_malflaeche;

public static void main(String[] args)
{
CFunkPlotter Fenster =
new CFunkPlotter("Funktionenplotter");
Fenster.pack();
Fenster.setSize(450,350);
Fenster.setResizable(false);
Fenster.show();
}

// Im Konstruktor werden die Canvas-Malfläche und
// Schalter zur Auswahl der Funktionen angelegt
CFunkPlotter(String titel)
{
super(titel);

// Einen Layout Manager einrichten
getContentPane().setLayout(new FlowLayout());

// Die Malfläche aufnehmen
m_malflaeche = new CMeineCanvas();

getContentPane().add(m_malflaeche);

// Schalter anlegen und in Panel aufnehmen
JButton f1 = new JButton("tan(x)");
JButton f2 = new JButton("x^3");
getContentPane().add(f1);
getContentPane().add(f2);


class CMeinWindowAdapter extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}

// Das Event-Handling für die Schalter
class CMeinActionLauscher implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String label;

label = e.getActionCommand();

if(label.equals("tan(x)"))
aktFunktion = 1;
else
aktFunktion = 2;

// Neuzeichnen veranlassen
m_malflaeche.repaint();
}
}

// Die Lausch-Objekte anlegen
f1.addActionListener(new CMeinActionLauscher());
f2.addActionListener(new CMeinActionLauscher());
addWindowListener(new CMeinWindowAdapter());
}


class CMeineCanvas extends Canvas
{
// Konstruktor
CMeineCanvas() {
// den Hintergrund auf schwarz setzen
setBackground(Color.black);

// Vordergrund (=Zeichenfarbe) auf blau setzen
setForeground(Color.green);
}

// Die wichtigste Methode: hier wird gezeichnet!
public void paint(Graphics g) {
double x,y;
int xpos,ypos;

// Ursprung umsetzen
g.translate(150,150);

// Koordinatenachsen einzeichnen
g.setColor(Color.red);
g.drawLine(0,-150,0,150);
g.drawLine(-150,0,150,0);
g.drawString("-3",-150,12);
g.drawString("-3",4,147);
g.drawString("+3",135,12);
g.drawString("+3",4,-140);

// Farbe zum Zeichnen der Funktion
g.setColor(new Color(255,255,0));

// Wenn keine Funktion ausgewählt ist, nichts tun
if(aktFunktion == 0)
return;

for(x= -3.0; x<=3; x += 0.005) {
if(aktFunktion == 1)
y = Math.tan(x);
else
y = Math.pow(x,3);

xpos = (int) (x*50);
ypos = (int) (-y*50);

g.fillOval(xpos,ypos,3,3);
}
}

// Diese Methode liefert die minimale Größe der Canvas
public Dimension getMinimumSize() {
return new Dimension(300,300);
}

// Die Lieblingsgröße setzen wir auf die Minimalgröße
public Dimension getPreferredSize() {
return getMinimumSize();
}
}


} // Ende der Klasse CFunkPlotter
------------------------------------------------------
geht
------------------------------------------------------
------------------------------------------------------
 

Leroy42

Top Contributor
Ich führe mal code-Tags ein
Deutscher22 hat gesagt.:
Code:
 import java.awt.*;
 import java.awt.event.*;
 import javax.swing.*;
 
public class MeineCanvas extends Canvas
{
 MeineCanvas()
 {
   setBackground(Color.black);
   setForeground(Color.green);
 }
       public void paint(Graphics g)
       {
        double x,y;
        int xpos,ypos;
        
        g.translate(150,150);
        

        g.setColor(Color.red);
        g.drawLine(0,-150,0,150);
        g.drawLine(-150,0,150,0);
        
        g.drawString("-3",-150,12);
        g.drawString("+3",135,12);
        g.drawString("+3",4,-140);

        g.setColor(new Color(255,255,0));
        
        //Funktion ausgewählt, nichts tun
        if(aktFunktion ==0)
        return;
        
        for(x=-3.0;x<=3;x+=0.005)
        {
         if(aktFunktion ==1)
         y=Math.tan(x);
         else
         y=Math.pow(x,3);

        
        xpos=(int) (x*50);
        ypos=(int) (-y*50);
        
        g.fillOval(xpos,ypos,3,3);
        }
        }


//Liefert die minimale Größe der Canvals
public Dimension getMinimumSize()
{
  return new Dimension(300,300);
}

//Größe setzen
public Dimension getPreferredSize()
{
  return getMinimumSize();
}
}
------------------------------------------------------

Compailer sagt was mit "cannot access Canvas" bei extends Canvas
 

Leroy42

Top Contributor
Bei mir kein Problem. Der Compiler beschwert sich nur, das
er aktFunktion nicht finden kann.

Sobald ich ihm eine Instanzvariable gebe
Code:
int aktFunktion;
wird alles korrekt übersetzt.
 
D

Deutscher22

Gast
Sorry, der erste Quelltext ist ja unvollstädig. Finde ich nicht mehr.
Habe es noch mal versucht und die gleiche Fehlermeldung ist kam.

Der Kompailer beschwert sich das er (extends) Canvas nicht findet.


---------------------
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class PlotterAlk extends JFrame
{
int zHöhe;
CMeinCanvas mC;

public static void main(String[] args)
{
PlotterAlk Sw=new PlotterAlk("Alkohol-grad");

Sw.pack();
Sw.setSize(400,500);
Sw.setResizable(false);
Sw.show();
}

PlotterAlk(String titel)
{
super(titel);
zHöhe=0;

getContentPane().setLayout(new FlowLayout());

mC=new CMeinCanvas();
getContentPane().add(mC);


JButton p1=new JButton("+1");
JButton p2=new JButton("+2");
JButton p3=new JButton("+3");

getContentPane().add("SOUTH",p1);
getContentPane().add("NORTH",p2);
getContentPane().add("NORTH",p3);






class MeinALauscher implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String quelle= e.getActionCommand();

if(quelle=="+1")
zHöhe=1;
else
{
if(quelle=="+2")
zHöhe=2;
else
{
if(quelle=="+3")
zHöhe=3;
else
zHöhe=0;
}
}
m_malflaeche.repaint();
}
}

class MeinWLauscher extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}

p1.addActionListener(new MeinALauscher());
p2.addActionListener(new MeinALauscher());
p3.addActionListener(new MeinALauscher());
addWindowListener(new MeinWLauscher());
}

class CMeinCanvas extends Canvas
{
CMeinCanvas()
{
setBackground(Color.white);
setForeground(color.black);
}

public void paint(Graphics g)
{
g.setCololr(Color.red);
g.translate(150,150);

g.drawLine(-150,-150,150,150);

return;
}

public Dimension getPrefferedSize()
{
return new Dimension(300,300);
}

public Dimension getMinimumSize()
{
return new Dimension(200,200);
}

}



}//ende PlotterAlk[/b]
 

Leroy42

Top Contributor
[ c o d e ] Hier der Quelltext mit Einrückungen [ / c o d e ]

Die Leerzeichen natürlich weglassen. Hiefür gibt es auch einen Button "Code"
 

Leroy42

Top Contributor
Code:
   class MeinWLauscher extends WindowAdapter
   {
     public void windowClosing(WindowEvent e)
     {
       System.exit(0);
     }
   }
   
   // <--------- Du schreibst hier Methoden-Aufrufe
   // <--------- ausserhalb einer Methode

   p1.addActionListener(new MeinALauscher());
   p2.addActionListener(new MeinALauscher());
   p3.addActionListener(new MeinALauscher());
  addWindowListener(new MeinWLauscher());
 }

In welcher Methode soll denn
Code:
p1.addActionListener(new MeinALauscher());
stehen??
 
G

Guest

Gast
Danke,

jetzt sieht ja bald keiner mehr durch.

Ich hoffe ich bekomme noch eine Antwort.

Also das geht nicht, der findet bei (extends) Canvas nicht

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

public class PlotterAlk extends JFrame
{
int zHöhe;
CMeinCanvas mC;

public static void main(String[] args)
{
PlotterAlk Sw=new PlotterAlk("Alkohol-grad");

Sw.pack();
Sw.setSize(400,500);
Sw.setResizable(false);
Sw.show();
}

PlotterAlk(String titel)
{
super(titel);
zHöhe=0;

getContentPane().setLayout(new FlowLayout());

mC=new CMeinCanvas();
getContentPane().add(mC);


JButton p1=new JButton("+1");
JButton p2=new JButton("+2");
JButton p3=new JButton("+3");

getContentPane().add("SOUTH",p1);
getContentPane().add("NORTH",p2);
getContentPane().add("NORTH",p3);






class MeinALauscher implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String quelle= e.getActionCommand();

if(quelle=="+1")
zHöhe=1;
else
{
if(quelle=="+2")
zHöhe=2;
else
{
if(quelle=="+3")
zHöhe=3;
else
zHöhe=0;
}
}
m_malflaeche.repaint();
}
}

class MeinWLauscher extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}

p1.addActionListener(new MeinALauscher());
p2.addActionListener(new MeinALauscher());
p3.addActionListener(new MeinALauscher());
addWindowListener(new MeinWLauscher());
}

class CMeinCanvas extends Canvas
{
CMeinCanvas()
{
setBackground(Color.white);
setForeground(color.black);
}

public void paint(Graphics g)
{
g.setCololr(Color.red);
g.translate(150,150);

g.drawLine(-150,-150,150,150);

return;
}

public Dimension getPrefferedSize()
{
return new Dimension(300,300);
}

public Dimension getMinimumSize()
{
return new Dimension(200,200);
}

}



}//ende PlotterAlk[/b]
 
D

deutscher22

Gast
Die sind im Constructor und zwei Klassen sind da auch drin.

Das steht so im Buch.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M JavaFX Non-static method 'widthProperty()' cannot be referenced from a static context AWT, Swing, JavaFX & SWT 4
S Swing jx cannot be resolved to a variable (2.) AWT, Swing, JavaFX & SWT 1
S Swing jx cannot be resolved to a variable AWT, Swing, JavaFX & SWT 6
H Swing Spiel: Maexchen: method cannot be applied to given types AWT, Swing, JavaFX & SWT 3
Q sun.awt.X11.XException: Cannot write XdndAware property - Was bedeutet das? AWT, Swing, JavaFX & SWT 2
H Swing JDialog cannot be resolved as a typ AWT, Swing, JavaFX & SWT 12
M JTable Cannot find Symbol AWT, Swing, JavaFX & SWT 7
T The import javax.vecmath cannot be resolved AWT, Swing, JavaFX & SWT 2
K Cannot find symbol: class JCanvas AWT, Swing, JavaFX & SWT 8
A Swing LAF unter Windows: javax.swing.DebugGraphics cannot be cast to java.awt.Graphics2D AWT, Swing, JavaFX & SWT 5
M setColor mit Fehler cannot fiend symbol (java.awt.Color) AWT, Swing, JavaFX & SWT 2
S cannot find symbol. AWT, Swing, JavaFX & SWT 2
B Cannot refer to a non-final variable (JButton) AWT, Swing, JavaFX & SWT 3
G JTextField - cannot find symbol 114 AWT, Swing, JavaFX & SWT 4
Z Cannot load AWT toolkit AWT, Swing, JavaFX & SWT 3
J Searchfunktion auf einer MS Access Datenbank AWT, Swing, JavaFX & SWT 7
M Image aus MS Access anzeigen lassen AWT, Swing, JavaFX & SWT 9
S JavaFX Resctricted library access AWT, Swing, JavaFX & SWT 4
D SWT SWT Elemente aus anderen Klassen aufrufen - Invalid thread access AWT, Swing, JavaFX & SWT 6
J JApplet, HTML und access denied exitVM.0 AWT, Swing, JavaFX & SWT 3
F Java 3D - Access restriction AWT, Swing, JavaFX & SWT 9
B AWTUtilities: Access restriction AWT, Swing, JavaFX & SWT 2
H JavaFX Canvas neu zeichnen anstoßen AWT, Swing, JavaFX & SWT 34
H JavaFX Gedrehter Text auf Canvas (Positionierung) AWT, Swing, JavaFX & SWT 6
ExceptionOfExpectation Textdarstellung auf einem Canvas mit Hilfe von repaint(); AWT, Swing, JavaFX & SWT 6
W Clear Canvas und anschließendes neues Erstellen von Objekten auf Canvas aus ArrayList AWT, Swing, JavaFX & SWT 4
W Canvas oder Polygone? AWT, Swing, JavaFX & SWT 3
Monokuma Canvas Form entfernen AWT, Swing, JavaFX & SWT 2
Monokuma KeyEvent in der Canvas Klasse AWT, Swing, JavaFX & SWT 0
M Internal Frames und Canvas-Element AWT, Swing, JavaFX & SWT 9
TheJavaKid Auf eine Zeichnung im Canvas reagieren AWT, Swing, JavaFX & SWT 13
M Halbkreiszeichnen(Canvas) - Diesen mit Mouseevents bestücken AWT, Swing, JavaFX & SWT 3
dereki2000 AWT Canvas zeichnet nicht AWT, Swing, JavaFX & SWT 7
D Canvas oder scene graph? AWT, Swing, JavaFX & SWT 16
J Canvas wird nicht angezeigt AWT, Swing, JavaFX & SWT 10
Y Objekte grafisch darstellen ohne GMF - Composite auf Canvas? AWT, Swing, JavaFX & SWT 2
Prafy AWT Klickbare Bereiche auf Canvas AWT, Swing, JavaFX & SWT 2
J JavaFX JavaFX Canvas einfaches Zeichenprogramm AWT, Swing, JavaFX & SWT 7
P MalProgramm mit JScrollPane und Canvas AWT, Swing, JavaFX & SWT 2
Cromewell JavaFX Nur bestimmten Teil eines Canvas rendern und anzeigen AWT, Swing, JavaFX & SWT 2
N Swing Benötige Hilfe um ein Swing Canvas zu speichern AWT, Swing, JavaFX & SWT 4
L JavaFX Canvas max size? AWT, Swing, JavaFX & SWT 1
J JavaFX Rendering von Canvas sehr langsam AWT, Swing, JavaFX & SWT 2
P AWT Canvas freihändig zeichnen AWT, Swing, JavaFX & SWT 1
Regedit JavaFX Java Canvas hört ständig auf zu aktualisieren/malen AWT, Swing, JavaFX & SWT 3
H JavaFX Freezes beim Zeichnen mit Canvas AWT, Swing, JavaFX & SWT 3
Z Canvas in Frame einfügen. Problem mit 4-Gewinnt AWT, Swing, JavaFX & SWT 1
B JavaFX KeyEvent und Canvas draw Problem AWT, Swing, JavaFX & SWT 9
K Fragen zu JavaFx Canvas AWT, Swing, JavaFX & SWT 0
C Java FX Canvas missing getGraphicContext2D AWT, Swing, JavaFX & SWT 5
windl Overlay mit Transparentem JWindow und Canvas AWT, Swing, JavaFX & SWT 2
S JavaFX Canvas - nur eine Figur auf der Zeichenfläche färben? AWT, Swing, JavaFX & SWT 1
R JComponent auf Canvas AWT, Swing, JavaFX & SWT 8
S Canvas durch transparentes JPanel sichtbar machen AWT, Swing, JavaFX & SWT 2
A JavaFX Menubar wird von Canvas überzeichnet AWT, Swing, JavaFX & SWT 8
antonbracke Multiplayer Shooter- Wie geht das mit Canvas & Graphics AWT, Swing, JavaFX & SWT 6
Luk10 KeyBindings mit Canvas? AWT, Swing, JavaFX & SWT 3
B LookAndFeel GWT: Canvas in TabSet nicht sichtbar AWT, Swing, JavaFX & SWT 2
K canvas zeig nach repaint nichts an AWT, Swing, JavaFX & SWT 8
T Canvas clipping AWT, Swing, JavaFX & SWT 4
S 2 Canvas übereinander AWT, Swing, JavaFX & SWT 2
S 2D-Grafik Canvas Problem(Größe) AWT, Swing, JavaFX & SWT 6
K 3D-Grafik Canvas ist ein eigener Frame?! AWT, Swing, JavaFX & SWT 13
F Canvas Objekt außerhalb des Frames zeichnen AWT, Swing, JavaFX & SWT 3
M Wofür Canvas? AWT, Swing, JavaFX & SWT 5
frankred Swing Canvas nach "Window-resize" neu Zeichnen lassen wegen Anzeigefehler AWT, Swing, JavaFX & SWT 4
S Canvas in ScrollPane wird beim scrollen immer neu gezeichnet AWT, Swing, JavaFX & SWT 3
F Nur ein Objekt auf Canvas neu zeichnen AWT, Swing, JavaFX & SWT 4
B AWT Canvas überdeckt nach repaint() JComboBox-Optionen AWT, Swing, JavaFX & SWT 2
lumo SWT Canvas transparent AWT, Swing, JavaFX & SWT 4
2 AWT Zeichnen in Canvas AWT, Swing, JavaFX & SWT 5
B 2D-Grafik Malen/übermalen mit Canvas AWT, Swing, JavaFX & SWT 5
L Dynamisch Objekte in Canvas zeichnen AWT, Swing, JavaFX & SWT 5
G Auf Canvas zeichnen nur über boolean-Abfragen? AWT, Swing, JavaFX & SWT 5
S Canvas-Inhalt in Laufzeit ändern AWT, Swing, JavaFX & SWT 6
R In JFrame oder in Canvas mit grafischen Elemente zeichnen AWT, Swing, JavaFX & SWT 2
I Canvas Repaint Probleme AWT, Swing, JavaFX & SWT 2
S Bild wird auf Canvas in Applet nicht gezeichnet AWT, Swing, JavaFX & SWT 4
G SWT Linie unter transparentes Canvas zeichnen AWT, Swing, JavaFX & SWT 4
F Swing Paint mit Canvas Element AWT, Swing, JavaFX & SWT 35
S SWT Canvas: Flackernde Bilder AWT, Swing, JavaFX & SWT 3
T AWT canvas AWT, Swing, JavaFX & SWT 3
P Canvas: String wird nicht gezeichnet AWT, Swing, JavaFX & SWT 5
T SWT Canvas Koordinaten per MouseMove auslesen AWT, Swing, JavaFX & SWT 1
H Zeichnen auf smartgwt Canvas AWT, Swing, JavaFX & SWT 4
G Drag and Drop JTree to Canvas AWT, Swing, JavaFX & SWT 7
K Swing Sinuskurve zeichnen auf Canvas AWT, Swing, JavaFX & SWT 2
M AWT Component/Canvas erzeugt unerwünschten Rahmen bei paint AWT, Swing, JavaFX & SWT 3
J Canvas / paint() AWT, Swing, JavaFX & SWT 2
D Canvas soll angezeigtes jpg-Bild aktualisieren AWT, Swing, JavaFX & SWT 4
N zeichnen auf awt canvas AWT, Swing, JavaFX & SWT 9
G Ein Wort in einem String färben in einer Canvas AWT, Swing, JavaFX & SWT 10
J Canvas Inhalt als Bild speichern! AWT, Swing, JavaFX & SWT 16
T zeichnen mit canvas AWT, Swing, JavaFX & SWT 3
S repaint im Canvas AWT, Swing, JavaFX & SWT 3
D Canvas und Buttons AWT, Swing, JavaFX & SWT 20
P Zeichnen in Canvas und Neuzeichnen AWT, Swing, JavaFX & SWT 3
G Canvas + Swing-Objekte AWT, Swing, JavaFX & SWT 5
C canvas.draw zeichne ohne ausfüllen AWT, Swing, JavaFX & SWT 9
P Canvas in JFrame mit GridLayout AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben