mariade
15-04-2007, 14:44
ciao ragazzi,
volevo che deste attenzione al codice che ho scritto per dirmi dove sbaglio perche' non riesco a capirlo.
Vi preciso prima di tutto l'errore:
C:\java\java3>javac Polygon.java
Polygon.java:35: cannot find symbol
symbol : method drawPolygon(int,int,int)
location: class java.awt.Graphics
g.drawPolygon(getUpperLeftX(),getUpperLeftY(), getPointCt());
^
1 error
Di seguito I codici che mi servono correggere:
import java.awt.*;
import javax.swing.*;
import java.io.Serializable;
public abstract class MyShape implements Serializable {
private int x1, x2, y1, y2;
private int pointCt = 0;
private int XYValues[] = new int[500];
private Color color=Color.WHITE;
public MyShape () {setX1(0); setY1(0); setX2(0); setY2(0);}
public MyShape (int val1, int val2, int val3, int val4) { setX1(val1); setY1(val2); setX2(val3); setY2(val4);}
public MyShape (int val1, int val2, int val3, int val4, int pointCt) { setX1(val1); setY1(val2); setX2(val3);setY2(val4); setPointCt(pointCt);}
public MyShape (int val1, int val2, int val3, int val4, Color col) { setX1(val1); setY1(val2); setX2(val3);setY2(val4); setColor(col);}
public MyShape (int vals[]) {setX1(vals[0]); setY1(vals[1]); setX2(vals[2]); setY2(vals[3]); }
public MyShape (int vals[], int pointCt) {setX1(vals[0]); setY1(vals[1]); setX2(vals[2]); setY2(vals[3]); setPointCt(pointCt); }
public MyShape (int vals[], Color col) {setX1(vals[0]); setY1(vals[1]); setX2(vals[2]); setY2(vals[3]);setColor(col); }
public void setX1(int val) {x1 = ( val >= 0 ? val : 0 );}
public void setX2(int val) {x2 = ( val >= 0 ? val : 0 );}
public void setY1(int val) {y1 = ( val >= 0 ? val : 0 );}
public void setY2(int val) {y2 = ( val >= 0 ? val : 0 );}
public void setPointCt(int pointCt) {pointCt = ( pointCt >= 0 ? pointCt : 0 );}
public void setColor(Color col) {this.color = col;}
public Color getColor() {return color;}
public int getX1() {return x1;}
public int getX2() {return x2;}
public int getY1() {return y1;}
public int getY2() {return y2;}
public int getPointCt() {return pointCt;}
public abstract void draw (Graphics g);
}
import java.awt.*;
import javax.swing.*;
import java.awt.Color;
import java.awt.Graphics;
import static java.lang.Math.*;
public class Polygon extends MyShape {
private int pointCt = 0;
public Polygon () {super();}
public Polygon (int x1, int y1, int x2, int y2) {super(x1,y1,x2,y2); }
public Polygon (int val1, int val2, int val3, int val4, int pointCt) {super(val1,val2,val3,val4,pointCt); }
public Polygon (int val1, int val2, int val3, int val4, Color col) {super(val1,val2,val3,val4,col); }
public Polygon (int val[]) {super(val);}
public Polygon (int val[],int pointCt) {super(val,pointCt);}
public Polygon (int val[],Color col) {super(val,col);}
public int getUpperLeftX() { return Math.min(getX1(), getX2()); }
public int getUpperLeftY() { return Math.min(getY1(), getY2()); }
public void draw (Graphics g) {
g.setColor(getColor());
g.drawPolygon(getUpperLeftX(),getUpperLeftY(), getPointCt());
}
}
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.FileOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.EOFException;
import java.io.ObjectOutputStream;
import java.io.ObjectInputStream;
import java.util.NoSuchElementException;
public class ShapeDrawJFrame extends JFrame {
private final int SHAPETYPES=6;
private int shapeType=0;
private String shapeTypes[]= {"Line","Oval", "Rectangle", "FilledOval", "FilledRectangle", "Polygon"};
private int numShapes=0;
private int XYValues[] = new int[500];
private int pointCt = 0;
private MyShape[] shapes = new MyShape[100];
private JComboBox shapesComboBox;
private JComboBox colorChoice;
private Container container;
private JPanel lowerRow;
private JPanel upperRow;
private JButton undoButton;
private JLabel label;
private Graphics dragGraphics;
private Color dragColor;
private int startAngle;
private int arcAngle;
private ObjectOutputStream output;
private ObjectInputStream input;
private final static int
BLACK = 0,
RED = 1, // Some constants to make
GREEN = 2, // the code more readable.
BLUE = 3, // These numbers code for
CYAN = 4, // the different drawing colors.
MAGENTA = 5,
YELLOW = 6,
ORANGE = 7,
PINK = 8,
GRAY = 9;
private boolean beingDragged;
private JButton save, load;
private JTextField fileName;
public ShapeDrawJFrame() {
super("Draw Shapes");
// addMouseListener(handler);
// addMouseMotionListener(handler);
container = getContentPane();
container.setBackground(new Color(255,255,255));
lowerRow = new JPanel();
label = new JLabel("You have select the type of shape to draw:");
lowerRow.add(label);
shapesComboBox = new JComboBox(shapeTypes);
shapesComboBox.setSelectedIndex(0);
lowerRow.add(shapesComboBox);
colorChoice = new JComboBox();
colorChoice.addItem("Black");
colorChoice.addItem("Red");
colorChoice.addItem("Green");
colorChoice.addItem("Blue");
colorChoice.addItem("Cyan");
colorChoice.addItem("Magenta");
colorChoice.addItem("Yellow");
colorChoice.addItem("Orange");
colorChoice.addItem("Pink");
colorChoice.addItem("Gray");
colorChoice.setBackground(Color.white);
lowerRow.add(colorChoice);
undoButton = new JButton("UNDO");
lowerRow.add(undoButton);
container.add(lowerRow, BorderLayout.SOUTH);
MouseHandler handler= new MouseHandler();
addMouseListener(handler);
addMouseMotionListener(handler);
upperRow = new JPanel();
save = new JButton( " Save " );
upperRow.add(save);
save.addActionListener(
new ActionListener()
{
public void actionPerformed( ActionEvent event )
{
openOutputFile();
writeShapes();
closeFile();
}
}
);
load = new JButton( " Load " );
upperRow.add(load);
load.addActionListener(
new ActionListener()
{
public void actionPerformed( ActionEvent event )
{
openInputFile();
readShapes();
closeFile();
repaint();
}
}
);
fileName=new JTextField(15);
upperRow.add(fileName);
container.add(upperRow, BorderLayout.NORTH);
setSize(600,600);
setVisible( true );
}
public void paint( Graphics g) {
super.paint(g);
for (int sp=0;sp< shapes.length ; sp++) {
if(shapes[sp]!=null) {
//g.setColor(dragColor);
shapes[sp].draw(g); }
}
}
public void createShape(int index) {
numShapes++;
switch (index) {
case 0: shapes[numShapes] = new Line(XYValues,getCurrentColor()); break;
case 1: shapes[numShapes] = new Oval(XYValues,getCurrentColor()); break;
case 2: shapes[numShapes] = new Rectangle(XYValues,getCurrentColor()); break;
case 3: shapes[numShapes] = new FilledOval(XYValues,getCurrentColor()); break;
case 4: shapes[numShapes] = new FilledRectangle(XYValues,getCurrentColor()); break;
}
}
private Color getCurrentColor() {
// Check the colorChoice menu to find the currently
// selected color, and return the appropriate color
// object.
int currentColor = colorChoice.getSelectedIndex();
Color colorPlot=new Color(0,0,0);
switch (currentColor) {
case 0:
colorPlot=Color.BLACK;
break;
case 1:
colorPlot=Color.RED;
break;
case 2:
colorPlot=Color.GREEN;
break;
case 3:
colorPlot=Color.BLUE;
break;
case 4:
colorPlot=Color.CYAN;
break;
case 5:
colorPlot=Color.MAGENTA;
break;
case 6:
colorPlot=Color.YELLOW;
break;
case 7:
colorPlot=Color.ORANGE;
break;
case 8:
colorPlot=Color.PINK;
break;
case 9:
colorPlot=Color.GRAY;
break;
default:
colorPlot=Color.BLACK;
break; }
return colorPlot;
}
private class MouseHandler implements MouseMotionListener, MouseListener{
public void mousePressed (MouseEvent event) {
XYValues[0] = event.getX();
XYValues[1] = event.getY();
//dragGraphics = container.getGraphics();
//dragColor = getCurrentColor();
//dragGraphics.setColor(dragColor);
}
public void mouseDragged(MouseEvent event)
{
XYValues[2]=event.getX();
XYValues[3]=event.getY();
createShape(shapesComboBox.getSelectedIndex());
numShapes--;
repaint();
}
public void mouseReleased (MouseEvent event) {
XYValues[2] = event.getX();
XYValues[3] = event.getY();
createShape(shapesComboBox.getSelectedIndex());
repaint( );
}
public void mouseEntered(MouseEvent event){}
public void mouseClicked(MouseEvent event){}
public void mouseExited(MouseEvent event){}
public void mouseMoved(MouseEvent event){}
}
public void openOutputFile()
{
try
{
output = new ObjectOutputStream(new FileOutputStream(fileName.getText()));
}
catch (IOException ioException )
{
System.err.println("error output opening file");
}
}
public void openInputFile()
{
try
{
input = new ObjectInputStream(new FileInputStream(fileName.getText()));
}
catch (IOException ioException )
{
System.err.println("error input opening file");
}
}
public void closeFile()
{
try
{
if(input != null)
input.close();
if(output != null)
output.close();
}
catch (IOException ioException )
{
System.err.println("error closing file");
System.exit(1);
}
}
public void writeShapes()
{
for(int sp=0; sp<shapes.length;sp++)
{
try
{
if(shapes[sp]!=null)
{
output.writeObject(shapes[sp]);
}
}
catch (IOException ioException)
{
System.err.println("error writing to file");
return;
}
catch (NoSuchElementException elementException)
{
System.err.println("Invalid Input. Please try again");
}
}
}
public void readShapes()
{
for(int i=0;i<numShapes;i++) shapes[i]= null;
numShapes =0;
try
{
while(true)
{
shapes[numShapes] = (MyShape) input.readObject();
numShapes++;
}
}
catch (EOFException endOfFileException)
{
return;
}
catch (ClassNotFoundException classNotFoundException)
{
System.err.println("unable to create object");
}
catch (IOException ioException)
{
System.err.println("error during read from file");
}
}
}
qui il codice main:
import javax.swing.JFrame;
public class ShapeDraw
{
//execute application
public static void main(String args[]) {
ShapeDrawJFrame shapeDrawJFrame = new ShapeDrawJFrame();
shapeDrawJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
shapeDrawJFrame.setVisible( true );
}}
Volevo aggiungere che java ho cominciato adesso a studiarlo!
Vi prego qualche dritta!Grazie a tutti!
volevo che deste attenzione al codice che ho scritto per dirmi dove sbaglio perche' non riesco a capirlo.
Vi preciso prima di tutto l'errore:
C:\java\java3>javac Polygon.java
Polygon.java:35: cannot find symbol
symbol : method drawPolygon(int,int,int)
location: class java.awt.Graphics
g.drawPolygon(getUpperLeftX(),getUpperLeftY(), getPointCt());
^
1 error
Di seguito I codici che mi servono correggere:
import java.awt.*;
import javax.swing.*;
import java.io.Serializable;
public abstract class MyShape implements Serializable {
private int x1, x2, y1, y2;
private int pointCt = 0;
private int XYValues[] = new int[500];
private Color color=Color.WHITE;
public MyShape () {setX1(0); setY1(0); setX2(0); setY2(0);}
public MyShape (int val1, int val2, int val3, int val4) { setX1(val1); setY1(val2); setX2(val3); setY2(val4);}
public MyShape (int val1, int val2, int val3, int val4, int pointCt) { setX1(val1); setY1(val2); setX2(val3);setY2(val4); setPointCt(pointCt);}
public MyShape (int val1, int val2, int val3, int val4, Color col) { setX1(val1); setY1(val2); setX2(val3);setY2(val4); setColor(col);}
public MyShape (int vals[]) {setX1(vals[0]); setY1(vals[1]); setX2(vals[2]); setY2(vals[3]); }
public MyShape (int vals[], int pointCt) {setX1(vals[0]); setY1(vals[1]); setX2(vals[2]); setY2(vals[3]); setPointCt(pointCt); }
public MyShape (int vals[], Color col) {setX1(vals[0]); setY1(vals[1]); setX2(vals[2]); setY2(vals[3]);setColor(col); }
public void setX1(int val) {x1 = ( val >= 0 ? val : 0 );}
public void setX2(int val) {x2 = ( val >= 0 ? val : 0 );}
public void setY1(int val) {y1 = ( val >= 0 ? val : 0 );}
public void setY2(int val) {y2 = ( val >= 0 ? val : 0 );}
public void setPointCt(int pointCt) {pointCt = ( pointCt >= 0 ? pointCt : 0 );}
public void setColor(Color col) {this.color = col;}
public Color getColor() {return color;}
public int getX1() {return x1;}
public int getX2() {return x2;}
public int getY1() {return y1;}
public int getY2() {return y2;}
public int getPointCt() {return pointCt;}
public abstract void draw (Graphics g);
}
import java.awt.*;
import javax.swing.*;
import java.awt.Color;
import java.awt.Graphics;
import static java.lang.Math.*;
public class Polygon extends MyShape {
private int pointCt = 0;
public Polygon () {super();}
public Polygon (int x1, int y1, int x2, int y2) {super(x1,y1,x2,y2); }
public Polygon (int val1, int val2, int val3, int val4, int pointCt) {super(val1,val2,val3,val4,pointCt); }
public Polygon (int val1, int val2, int val3, int val4, Color col) {super(val1,val2,val3,val4,col); }
public Polygon (int val[]) {super(val);}
public Polygon (int val[],int pointCt) {super(val,pointCt);}
public Polygon (int val[],Color col) {super(val,col);}
public int getUpperLeftX() { return Math.min(getX1(), getX2()); }
public int getUpperLeftY() { return Math.min(getY1(), getY2()); }
public void draw (Graphics g) {
g.setColor(getColor());
g.drawPolygon(getUpperLeftX(),getUpperLeftY(), getPointCt());
}
}
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.FileOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.EOFException;
import java.io.ObjectOutputStream;
import java.io.ObjectInputStream;
import java.util.NoSuchElementException;
public class ShapeDrawJFrame extends JFrame {
private final int SHAPETYPES=6;
private int shapeType=0;
private String shapeTypes[]= {"Line","Oval", "Rectangle", "FilledOval", "FilledRectangle", "Polygon"};
private int numShapes=0;
private int XYValues[] = new int[500];
private int pointCt = 0;
private MyShape[] shapes = new MyShape[100];
private JComboBox shapesComboBox;
private JComboBox colorChoice;
private Container container;
private JPanel lowerRow;
private JPanel upperRow;
private JButton undoButton;
private JLabel label;
private Graphics dragGraphics;
private Color dragColor;
private int startAngle;
private int arcAngle;
private ObjectOutputStream output;
private ObjectInputStream input;
private final static int
BLACK = 0,
RED = 1, // Some constants to make
GREEN = 2, // the code more readable.
BLUE = 3, // These numbers code for
CYAN = 4, // the different drawing colors.
MAGENTA = 5,
YELLOW = 6,
ORANGE = 7,
PINK = 8,
GRAY = 9;
private boolean beingDragged;
private JButton save, load;
private JTextField fileName;
public ShapeDrawJFrame() {
super("Draw Shapes");
// addMouseListener(handler);
// addMouseMotionListener(handler);
container = getContentPane();
container.setBackground(new Color(255,255,255));
lowerRow = new JPanel();
label = new JLabel("You have select the type of shape to draw:");
lowerRow.add(label);
shapesComboBox = new JComboBox(shapeTypes);
shapesComboBox.setSelectedIndex(0);
lowerRow.add(shapesComboBox);
colorChoice = new JComboBox();
colorChoice.addItem("Black");
colorChoice.addItem("Red");
colorChoice.addItem("Green");
colorChoice.addItem("Blue");
colorChoice.addItem("Cyan");
colorChoice.addItem("Magenta");
colorChoice.addItem("Yellow");
colorChoice.addItem("Orange");
colorChoice.addItem("Pink");
colorChoice.addItem("Gray");
colorChoice.setBackground(Color.white);
lowerRow.add(colorChoice);
undoButton = new JButton("UNDO");
lowerRow.add(undoButton);
container.add(lowerRow, BorderLayout.SOUTH);
MouseHandler handler= new MouseHandler();
addMouseListener(handler);
addMouseMotionListener(handler);
upperRow = new JPanel();
save = new JButton( " Save " );
upperRow.add(save);
save.addActionListener(
new ActionListener()
{
public void actionPerformed( ActionEvent event )
{
openOutputFile();
writeShapes();
closeFile();
}
}
);
load = new JButton( " Load " );
upperRow.add(load);
load.addActionListener(
new ActionListener()
{
public void actionPerformed( ActionEvent event )
{
openInputFile();
readShapes();
closeFile();
repaint();
}
}
);
fileName=new JTextField(15);
upperRow.add(fileName);
container.add(upperRow, BorderLayout.NORTH);
setSize(600,600);
setVisible( true );
}
public void paint( Graphics g) {
super.paint(g);
for (int sp=0;sp< shapes.length ; sp++) {
if(shapes[sp]!=null) {
//g.setColor(dragColor);
shapes[sp].draw(g); }
}
}
public void createShape(int index) {
numShapes++;
switch (index) {
case 0: shapes[numShapes] = new Line(XYValues,getCurrentColor()); break;
case 1: shapes[numShapes] = new Oval(XYValues,getCurrentColor()); break;
case 2: shapes[numShapes] = new Rectangle(XYValues,getCurrentColor()); break;
case 3: shapes[numShapes] = new FilledOval(XYValues,getCurrentColor()); break;
case 4: shapes[numShapes] = new FilledRectangle(XYValues,getCurrentColor()); break;
}
}
private Color getCurrentColor() {
// Check the colorChoice menu to find the currently
// selected color, and return the appropriate color
// object.
int currentColor = colorChoice.getSelectedIndex();
Color colorPlot=new Color(0,0,0);
switch (currentColor) {
case 0:
colorPlot=Color.BLACK;
break;
case 1:
colorPlot=Color.RED;
break;
case 2:
colorPlot=Color.GREEN;
break;
case 3:
colorPlot=Color.BLUE;
break;
case 4:
colorPlot=Color.CYAN;
break;
case 5:
colorPlot=Color.MAGENTA;
break;
case 6:
colorPlot=Color.YELLOW;
break;
case 7:
colorPlot=Color.ORANGE;
break;
case 8:
colorPlot=Color.PINK;
break;
case 9:
colorPlot=Color.GRAY;
break;
default:
colorPlot=Color.BLACK;
break; }
return colorPlot;
}
private class MouseHandler implements MouseMotionListener, MouseListener{
public void mousePressed (MouseEvent event) {
XYValues[0] = event.getX();
XYValues[1] = event.getY();
//dragGraphics = container.getGraphics();
//dragColor = getCurrentColor();
//dragGraphics.setColor(dragColor);
}
public void mouseDragged(MouseEvent event)
{
XYValues[2]=event.getX();
XYValues[3]=event.getY();
createShape(shapesComboBox.getSelectedIndex());
numShapes--;
repaint();
}
public void mouseReleased (MouseEvent event) {
XYValues[2] = event.getX();
XYValues[3] = event.getY();
createShape(shapesComboBox.getSelectedIndex());
repaint( );
}
public void mouseEntered(MouseEvent event){}
public void mouseClicked(MouseEvent event){}
public void mouseExited(MouseEvent event){}
public void mouseMoved(MouseEvent event){}
}
public void openOutputFile()
{
try
{
output = new ObjectOutputStream(new FileOutputStream(fileName.getText()));
}
catch (IOException ioException )
{
System.err.println("error output opening file");
}
}
public void openInputFile()
{
try
{
input = new ObjectInputStream(new FileInputStream(fileName.getText()));
}
catch (IOException ioException )
{
System.err.println("error input opening file");
}
}
public void closeFile()
{
try
{
if(input != null)
input.close();
if(output != null)
output.close();
}
catch (IOException ioException )
{
System.err.println("error closing file");
System.exit(1);
}
}
public void writeShapes()
{
for(int sp=0; sp<shapes.length;sp++)
{
try
{
if(shapes[sp]!=null)
{
output.writeObject(shapes[sp]);
}
}
catch (IOException ioException)
{
System.err.println("error writing to file");
return;
}
catch (NoSuchElementException elementException)
{
System.err.println("Invalid Input. Please try again");
}
}
}
public void readShapes()
{
for(int i=0;i<numShapes;i++) shapes[i]= null;
numShapes =0;
try
{
while(true)
{
shapes[numShapes] = (MyShape) input.readObject();
numShapes++;
}
}
catch (EOFException endOfFileException)
{
return;
}
catch (ClassNotFoundException classNotFoundException)
{
System.err.println("unable to create object");
}
catch (IOException ioException)
{
System.err.println("error during read from file");
}
}
}
qui il codice main:
import javax.swing.JFrame;
public class ShapeDraw
{
//execute application
public static void main(String args[]) {
ShapeDrawJFrame shapeDrawJFrame = new ShapeDrawJFrame();
shapeDrawJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
shapeDrawJFrame.setVisible( true );
}}
Volevo aggiungere che java ho cominciato adesso a studiarlo!
Vi prego qualche dritta!Grazie a tutti!