|
|
|
![]() |
|
Strumenti |
![]() |
#21 |
Member
Iscritto dal: Sep 2005
Messaggi: 274
|
Su quale SO sei?
|
![]() |
![]() |
![]() |
#22 |
Senior Member
Iscritto dal: Jun 2005
Città: Swords, Dublino
Messaggi: 642
|
|
![]() |
![]() |
![]() |
#23 |
Member
Iscritto dal: Sep 2005
Messaggi: 274
|
Assicurati che nel path ci sia la versione giusta di jdk.
da prompt digita: "echo %PATH%" e Verifica. |
![]() |
![]() |
![]() |
#24 |
Senior Member
Iscritto dal: Jun 2005
Città: Swords, Dublino
Messaggi: 642
|
Ciao, son qui a postare dopo un po' di giorni.
Allora ho creato il codice per costruire l'arco. Codice:
import java.awt.*; import javax.swing.*; public class Arc extends BoundedShape { public Arc () {super();} public Arc (int val1, int val2, int val3, int val4, int val5, int val6) {super(val1,val2,val3,val4,val5,val6);} public Arc (int val1, int val2, int val3, int val4, int val5, int val6, boolean fill) {super(val1,val2,val3,val4,val5,val6,fill);} public Arc (int val[]) {super(val);} public Arc (int val[], boolean fill) {super(val, fill);} public void draw (Graphics g) { if(getFilled()) g.drawArc(getUpperLeftX(),getUpperLeftY(),getWidth(),getHeight(),getStartAngle(),getArcAngle()); else g.fillArc(getUpperLeftX(),getUpperLeftY(),getWidth(),getHeight(),getStartAngle(),getArcAngle()); } } Codice:
import java.awt.*; import javax.swing.*; public abstract class BoundedShape extends MyShape { public BoundedShape () {super();} public BoundedShape (int val1, int val2, int val3, int val4, int val5, int val6) {super(val1,val2,val3,val4, val5,val6);} public BoundedShape (int val1, int val2, int val3, int val4, int val5, int val6, boolean fill) { super(val1,val2,val3,val4,val5,val6, fill);} public BoundedShape (int val[]) {super(val); } public BoundedShape (int val[], boolean fill) {super(val, fill); } public int getUpperLeftX() { return Math.min(getX1(), getX2()); } public int getUpperLeftY() { return Math.min(getY1(), getY2()); } public int getWidth() {return Math.abs(getX1() - getX2());} public int getHeight() {return Math.abs(getY1() - getY2());} public int getStartAngle() {return Math.abs(getArc1());} public int getArcAngle() {return Math.abs(getArc2() - getArc1());} } Codice:
import java.awt.*; import javax.swing.*; public abstract class MyShape { private int x1, x2, y1, y2, arc1, arc2; private boolean isFilled = false; public MyShape () {setX1(0); setY1(0); setX2(0); setY2(0);setArc1(0);setArc2(0); } public MyShape (int val1, int val2, int val3, int val4, int val5, int val6) { setX1(val1); setY1(val2); setX2(val3); setY2(val4);setArc1(val5);setArc2(val6);} public MyShape (int val1,int val2,int val3,int val4,int val5, int val6, boolean fill) { setX1(val1); setY1(val2);setX2(val3);setY2(val4);setArc1(val5);setArc2(val6); isFilled = fill;} public MyShape (int vals[]) {setX1(vals[0]); setY1(vals[1]); setX2(vals[2]); setY2(vals[3]); setArc1(vals[4]); setArc2(vals[5]); } public MyShape (int vals[], boolean fill) { setX1(vals[0]); setY1(vals[1]); setX2(vals[2]); setY2(vals[3]); setArc1(vals[4]); setArc2(vals[5]); isFilled = fill; } 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 setArc1(int val) {arc1 = ( val >= 0 ? val : 0);} public void setArc2(int val) {arc2 = ( val >= 0 ? val : 0);} public void setFilled(boolean fill) {isFilled=fill;} public int getX1() {return x1;} public int getX2() {return x2;} public int getY1() {return y1;} public int getY2() {return y2;} public int getArc1() {return arc1;} public int getArc2() {return arc2;} public boolean getFilled() {return isFilled;} public abstract void draw (Graphics g); } Codice:
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ShapeDrawJFrame extends JFrame { private final int SHAPETYPES=6; private int shapeType=0; private String shapeTypes[]= {"Line","Oval", "Rectangle", "Arc", "Polygon", "Polyline"}; private int numShapes=0; private int XYValues[] = new int[4]; private int arcValues[] = new int[2]; private int XYPoints; private int nPoints; private MyShape[] shapes = new MyShape[100]; private JCheckBox filled; private JCheckBox empty; private JComboBox shapesComboBox; private JComboBox colorChoice; private Container container; private JPanel lowerRow; private JButton button; public ShapeDrawJFrame() { addMouseListener( new MouseClickHandler()); container = getContentPane(); container.setBackground(new Color(255,255,255)); lowerRow = new JPanel(); shapesComboBox = new JComboBox(shapeTypes); shapesComboBox.setSelectedIndex(0); lowerRow.add(shapesComboBox); colorChoice = new JComboBox(); colorChoice.setSelectedIndex(0); colorChoice.addItem("Black"); colorChoice.addItem("Red"); colorChoice.addItem("Green"); colorChoice.addItem("Blue"); colorChoice.addItem("Cyan"); colorChoice.addItem("Magenta"); colorChoice.addItem("Yellow"); colorChoice.addItem("White"); colorChoice.setBackground(Color.white); lowerRow.add(colorChoice); filled = new JCheckBox("Filled"); empty = new JCheckBox("Empty"); lowerRow.add(filled); lowerRow.add(empty); button = new JButton("UNDO"); lowerRow.add(button); container.add(lowerRow, BorderLayout.SOUTH); 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) { shapes[sp].draw(g); } } } public void createShape(int index) { numShapes++; switch (index) { case 0: shapes[numShapes] = new Line(XYValues); break; case 1: shapes[numShapes] = new Oval(XYValues); break; case 2: shapes[numShapes] = new Rectangle(XYValues); break; case 3: shapes[numShapes] = new Arc(XYValues, arcValues); break; case 4: shapes[numShapes] = new Polygon(XYValues); break; case 5: shapes[numShapes] = new Polyline(XYValues); break; } } private class MouseClickHandler extends MouseAdapter { public void mousePressed (MouseEvent event) { XYValues[0] = event.getX(); XYValues[1] = event.getY(); arcValues[4] = event.getArc(); } public void mouseReleased (MouseEvent event) { XYValues[2] = event.getX(); XYValues[3] = event.getY(); arcValues[5] = event.getArc(); createShape(shapesComboBox.getSelectedIndex()); repaint(); } } } [img=http://img256.imageshack.us/img256/5327/dosjq1.th.png] Allora il secondo e il terzo errore e' normale anche perche' non ho creato il codice, e poi tutti gli altri mi interesserebbe capire. Il codice della sottoclasse Rectangle e Line e' uguale a quello che ho postato all'inizio del thread cambiando la superclasse da Shape a My Shape come il professore voleva.Quindi vorrei capire perche' ora mi da errore. grazie per l'aiuto! ![]() Ultima modifica di mariade : 20-03-2007 alle 12:32. |
![]() |
![]() |
![]() |
#25 |
Member
Iscritto dal: Sep 2005
Messaggi: 274
|
L'immagine non riesco a visualizzarla.
P.S. per chiudere il campo code usa "/". |
![]() |
![]() |
![]() |
#26 |
Senior Member
Iscritto dal: Jun 2005
Città: Swords, Dublino
Messaggi: 642
|
|
![]() |
![]() |
![]() |
#27 |
Member
Iscritto dal: Sep 2005
Messaggi: 274
|
Controlla le firme dei costruttori!
|
![]() |
![]() |
![]() |
#28 |
Senior Member
Iscritto dal: Jun 2005
Città: Swords, Dublino
Messaggi: 642
|
Ciao,
scusami se son scocciante, il punto e' che, come avrai ben capito, sono alle prime armi con Java. Cosi', dato che ieri mi stavo incasinando perche' non capivo il problema, ho deciso di ricominciare. Partendo dal codice che grazie a te funzionava, ho deciso di occuparmi prima dell'interfaccia grafica, inserendo il combobox per la scelta dei colori, il checkbox per decidere se voglio la figura piena o vuota e il tasto di cancellazione della figura. cosi' ho cominciato col combox dei colori. Il mio problema e' che se cambio colore, le altre figure che avevo precedentemente disegnato, assumono come colore quello nuovo. Volevo sapere cosa mancava nel mio codice. ho gia' fatto molte prove da stamattina, ma non ne vengo a capo, potresti aiutarmi? Codice:
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ShapeDrawJFrame extends JFrame { private final int SHAPETYPES=3; private int shapeType=0; private String shapeTypes[]= {"Line","Oval", "Rectangle"}; private int numShapes=0; private int XYValues[] = new int[4]; private MyShape[] shapes = new MyShape[100]; private JCheckBox filled; private JComboBox shapesComboBox; private JComboBox colorChoice; private Container container; private JPanel lowerRow; private JButton button; private Graphics dragGraphics; private Color dragColor; 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, WHITE = 7; public ShapeDrawJFrame() { addMouseListener( new MouseClickHandler()); container = getContentPane(); container.setBackground(new Color(255,255,255)); lowerRow = new JPanel(); 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("White"); colorChoice.setBackground(Color.white); lowerRow.add(colorChoice); filled = new JCheckBox("Filled"); lowerRow.add(filled); button = new JButton("UNDO"); lowerRow.add(button); container.add(lowerRow, BorderLayout.SOUTH); 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); break; case 1: shapes[numShapes] = new Oval(XYValues); break; case 2: shapes[numShapes] = new Rectangle(XYValues); break; } } private Color getCurrentColor() { // Check the colorChoice menu to find the currently // selected color, and return the appropriate color // object. int currentColor = colorChoice.getSelectedIndex(); switch (currentColor) { case BLACK: return Color.black; case RED: return Color.red; case GREEN: return Color.green; case BLUE: return Color.blue; case CYAN: return Color.cyan; case MAGENTA: return Color.magenta; case YELLOW: return Color.yellow; default: return Color.white; } } private class MouseClickHandler extends MouseAdapter { public void mousePressed (MouseEvent event) { XYValues[0] = event.getX(); XYValues[1] = event.getY(); dragGraphics = container.getGraphics(); dragColor = getCurrentColor(); dragGraphics.setColor(dragColor); } public void mouseReleased (MouseEvent event) { XYValues[2] = event.getX(); XYValues[3] = event.getY(); createShape(shapesComboBox.getSelectedIndex()); int currentColor = colorChoice.getSelectedIndex();; repaint(); } } } Codice:
import java.awt.*; import javax.swing.*; public abstract class MyShape { private int x1, x2, y1, y2; private boolean isFilled = false; 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,boolean fill) {setX1(val1); setY1(val2);setX2(val3);setY2(val4); isFilled = fill;} public MyShape (int vals[]) {setX1(vals[0]); setY1(vals[1]); setX2(vals[2]); setY2(vals[3]); } public MyShape (int vals[], boolean fill) {setX1(vals[0]); setY1(vals[1]); setX2(vals[2]); setY2(vals[3]); isFilled = fill; } 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 setFilled(boolean fill) {isFilled=fill;} public int getX1() {return x1;} public int getX2() {return x2;} public int getY1() {return y1;} public int getY2() {return y2;} public boolean getFilled() {return isFilled;} public abstract void draw (Graphics g); } Codice:
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 ); }} Codice:
import java.awt.*; import javax.swing.*; public class Line extends MyShape { public Line () {super();} public Line (int val1, int val2, int val3, int val4) {super(val1,val2,val3,val4); } public Line (int val[]) {super(val);} public void draw (Graphics g) {g.drawLine(getX1(),getY1(),getX2(), getY2()); } } Codice:
import java.awt.*; import javax.swing.*; public class Oval extends BoundedShape { public Oval () {super();} public Oval (int val1, int val2, int val3, int val4) {super(val1,val2,val3,val4);} public Oval (int val1, int val2, int val3, int val4, boolean fill) {super(val1,val2,val3,val4, fill);} public Oval (int val[]) {super(val);} public Oval (int val[], boolean fill) {super(val, fill);} public void draw (Graphics g) { if(getFilled()) g.drawOval(getUpperLeftX(),getUpperLeftY(),getWidth(),getHeight()); else g.fillOval(getUpperLeftX(),getUpperLeftY(),getWidth(),getHeight()); } } Codice:
import java.awt.*; import javax.swing.*; public class Rectangle extends BoundedShape { public Rectangle () {super();} public Rectangle (int val1, int val2, int val3, int val4) {super(val1,val2,val3,val4);} public Rectangle (int val1, int val2, int val3, int val4, boolean fill) {super(val1,val2,val3,val4, fill);} public Rectangle (int val[]) {super(val);} public Rectangle (int val[], boolean fill) {super(val, fill);} public void draw (Graphics g) { if(getFilled()) g.drawRect(getUpperLeftX(),getUpperLeftY(),getWidth(),getHeight()); else g.fillRect(getUpperLeftX(),getUpperLeftY(),getWidth(),getHeight()); } } ![]() |
![]() |
![]() |
![]() |
#29 |
Member
Iscritto dal: Sep 2005
Messaggi: 274
|
Devi riscrivere il metodo repaint che invochi nel metodo:
Codice:
public void mouseReleased (MouseEvent event) { XYValues[2] = event.getX(); XYValues[3] = event.getY(); createShape(shapesComboBox.getSelectedIndex()); int currentColor = colorChoice.getSelectedIndex();; repaint(); } P.S. Scusa per il ritardo, ma ero incasinato al lavoro. ![]() |
![]() |
![]() |
![]() |
#30 | |
Senior Member
Iscritto dal: Jun 2005
Città: Swords, Dublino
Messaggi: 642
|
Quote:
|
|
![]() |
![]() |
![]() |
#31 |
Senior Member
Iscritto dal: Jun 2005
Città: Swords, Dublino
Messaggi: 642
|
scusami, non riesco proprio a capire come devo fare. Mica potresti scrivermi tu quella parte di codice? Grazie.
![]() |
![]() |
![]() |
![]() |
#32 |
Member
Iscritto dal: Sep 2005
Messaggi: 274
|
Prova un pò con questo questo!
![]() Codice:
public void mouseReleased (MouseEvent event) { XYValues[2] = event.getX(); XYValues[3] = event.getY(); createShape(shapesComboBox.getSelectedIndex()); int currentColor = colorChoice.getSelectedIndex();; repaint(XYValues[0], XYValues[1], XYValues[2] - XYValues[0], XYValues[3] - XYValues[1]); } |
![]() |
![]() |
![]() |
#33 |
Senior Member
Iscritto dal: Jun 2005
Città: Swords, Dublino
Messaggi: 642
|
Praticamente, ho copiato la linea di codice che hai scritto tu e l'ovale non esce completo, il rettangolo solo i due lati in alto, se sovrapponi un'altra figura, puoi vedere la parte che non si vedeva della figura sotto del colore della nuova. es:
![]() ![]() Lo stesso e' diventato cosi', una volta che ho fatto il printscreen e l'ho copiato su Paint, chiuso paint ecco il risultato: ![]() |
![]() |
![]() |
![]() |
#34 |
Member
Iscritto dal: Sep 2005
Messaggi: 274
|
Io ti ho dato lo spunto!
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:52.