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
------------------------------------------------------
------------------------------------------------------
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
------------------------------------------------------
------------------------------------------------------