Applet java...Aiutatemi...x favore!!!!

Aperto da Sere, 04 Ottobre 2007, 23:33:04

Discussione precedente - Discussione successiva

0 Utenti e 1 Visitatore stanno visualizzando questa discussione.

Sere

Buona sera a tutti...Scusatemi ma devo chiedervi un favore che mi potrebbe salvare dal delirio...:D
Cmq il mio probl è che devo creare un programma con java,un piccolo paint se così possiamo definirlo...in pratica devo creare un applet che mi permetta di disegnare ellissi,rettangoli e rette,di riempirli con alcuni colori a piacimento e di aggiungere o rimuovere l'ultima immagine selezionata...
Non posso utilizzare la classe JBotton quindi ho dovuto arrangiare dei bottoni un po' aritgianali,disegnandoli sullo schermo e azionandoli con il click del mouse,ma qui iniziano i miei probl xkè il programma sembra nn accorgersi del click del mouse...
vi allego qui il programma che ho fatto io fino ad ora...vi prego aiutatemiiii...sto impazzendo!!!!
:(

import javax.swing.JApplet;

import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.Color;
import java.awt.Shape;
import java.awt.geom.Line2D;
import java.awt.geom.Point2D;
import java.awt.geom.Ellipse2D;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseMotionAdapter;

/**
 *Programma per disegnare diverse forme geometriche(linee,rettangoli e ellissi),
 * con possibilità di cambiare i colori di riempimento.
 */
public class ProgrammaBis extends JApplet
{
   private Shape [] scegliForma;
   private Shape [] aggiungiRimuovi;
   private Shape [] scegliColori;
   private Shape [] contornoColori;
   private Point2D.Double punto;
   private Rectangle contorno;
   private BasicStroke spessore;
   private Ellisse[] ellisse;

public void init()
{
/**Crea tasti per la scelta della forma geometrica che si vuole disegnare.*/
scegliForma = new Shape[6];
int b=0;   
for(int i=0;i{
if(i<3)
{
scegliForma=new Rectangle (0,b,40,40);
b+=40;
}
if(i==3)
{
Point2D.Double   p1=new Point2D.Double(10,20);
Point2D.Double   p2=new Point2D.Double(30,20);
scegliForma=new Line2D.Double(p1,p2);
}
if(i==4)
{
scegliForma=new Ellipse2D.Double(5,50,30,20);
}
if(i==5)
{
scegliForma=new Rectangle (5,90,30,20);
}
}
/**Crea tasti per aggiungere o rimuovere l'ultima figura selezionata.*/   
aggiungiRimuovi=new Shape [2];
int a=0;
for(int i=0;i{
aggiungiRimuovi=new Rectangle (a,460,40,39);
a+=40;
}
/**Crea tasti per la selezione del colore di riempimento.*/
contornoColori=new Shape [6];
int a1=264;
for(int i=0;i{
contornoColori=new Rectangle (a1,460,39,39);
a1+=39;
}
scegliColori=new Shape [6];
int a2=265;
for(int i=0;i{
scegliColori=new Rectangle (a2,461,38,38);
a2+=39;
}
spessore=new BasicStroke(5.0f);
ellisse=new Ellisse[100];
class AscoltaClick extends MouseAdapter
{
public void mousePressed(MouseEvent e)
{
int x=getX();
int y=getY();
if(x<=40)
{
if(y<40)
{
contorno=new Rectangle(0,40,40,40);
}
if(y>40 && y<80)
{
contorno=new Rectangle(0,80,40,40);
}
if(y>80 && y<120)
{
contorno=new Rectangle(0,120,40,40);
}
}
if(y>=460)
{
if(x<40)
{
contorno=new Rectangle(0,460,40,39);
}
if(x>40 && x<80)
{
contorno=new Rectangle(40,460,40,39);
}
if(x>=264 && x<303)
{
contorno=new Rectangle(264,460,39,39);
}
if(x>303 && x<342)
{
contorno=new Rectangle(303,460,40,39);
}
if(x>342 && x<381)
{
contorno=new Rectangle(342,460,40,39);
}
if(x>381 && x<420)
{
contorno=new Rectangle(381,460,40,39);
}
if(x>420 && x<459)
{
contorno=new Rectangle(420,460,40,39);
}
if(x>459 && x<498)
{
contorno=new Rectangle(459,498,40,39);
}
}      
repaint();
}
}
}
/**Crea la pagina con relativi tasti per disegnare le figure geometriche.*/
public void paint(Graphics g)
{
Graphics2D g2 = (Graphics2D) g;
Graphics2D g3 =   (Graphics2D) g;
Graphics2D g4 = (Graphics2D) g;
Graphics2D g5 = (Graphics2D) g;
Graphics2D g6 = (Graphics2D) g;
Graphics2D g7 = (Graphics2D) g;
                    
/**Mantiene pulita la pagina quando viene modificato il suo stato.*/                   
g2.clearRect(0,0,getWidth(),getHeight());
/**Disegna i tasti per la scelta della forma geometrica.*/   
for(int i=0; ig2.draw((Shape) scegliForma);
      
/**Disegna i tasti per aggiungere e/o rimuovere le figure disegnate.*/   
for(int i=0; ig3.draw((Shape) aggiungiRimuovi);
g3.drawString("Agg",10,483);
g3.drawString("Rim",50,483);

/**Disegna i tasti per la selezione del colore di riempimento.*/
for(int i=0; ig4.draw((Shape) contornoColori);         
         
g5.fill((Shape) scegliColori[0]);
g5.setColor(Color.white);
g5.fill((Shape) scegliColori[1]);
g5.setColor(Color.red);
g5.fill((Shape) scegliColori[2]);
g5.setColor(Color.blue);
g5.fill((Shape) scegliColori[3]);
g5.setColor(Color.green);
g5.fill((Shape) scegliColori[4]);
g5.setColor(Color.yellow);
g5.fill((Shape) scegliColori[5]);

g6.setColor(Color.orange);
g6.setStroke(spessore);
g6.draw((Shape)contorno);
   
}
}

Aiutatemi please!!!!:o

benna

Ha dimenticato di dire alla JVM che il tuo programma è interessato algli Event provenienti dal mouse
Inserisci nella classe
AscoltaClick mouse = new AscoltaClick();
e nell' Init
addMouseListener(mouse);


Sere

Benna nn so proprio come ringraziarti...credo di aver capito ora!!!Senti,un'altra cosa,io ho già fatto a parte dei programmi che diesgnano le figure geometriche che mi servono,in che modo posso metterli nel programma che ho scritto sopra??
Scusami ma sono proprio alle prime armi con java e sopprattutto con gli applet...
e grazie di nuovo! ;)

benna

Figurati :)
Gli altri programmi puoi inserirli come metodi con un semplice copia-incolla


Sere

scusami benna,nn mi è molto chiaro,ci avevo già provato ma probabilmente sbaglio da qlc parte...puoi farmi vedere come devo fare x favore?
ti metto qui sotto uno dei programmi che devo aggiungere così mi è + chiaro e posso aggiungere anche gli altri...

import javax.swing.JApplet;

import java.lang.Math;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Point2D;
import java.awt.geom.Line2D;
import java.awt.geom.Ellipse2D;
import java.awt.Color;
import java.awt.Shape;
import java.awt.Font;
import java.awt.event.MouseEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseMotionAdapter;
import java.awt.BasicStroke;


public class Ellisse extends JApplet
{
private Ellipse2D.Double[] ellisse;
private Line2D.Double lineaCorrente;
private int numEllissi;
private Point2D.Double inizio;
private String messaggio;
private BasicStroke tratteggio;
private BasicStroke continuo;
       
public Ellisse () {
ellisse = new Ellipse2D.Double[100];
numEllissi = 0;
continuo = new BasicStroke(3.0f);
tratteggio = new BasicStroke(1.0f,BasicStroke.CAP_BUTT,BasicStroke.JOIN_MITER,10.0f,new float[] {10.0f,10.0f},0.0f);                    
/** la classe interna AscoltaClick ascolta i click del mouse*/
class AscoltaClick extends MouseAdapter
{
int x1=0;
int y1=0;
public void mousePressed(MouseEvent e)
{
if(numEllissi>=ellisse.length)
return;
x1 = e.getX();
y1 = e.getY();
Point2D.Double p = new Point2D.Double(x1, y1);
inizio = p;
lineaCorrente = new Line2D.Double(inizio,p);
repaint();
}
public void mouseReleased(MouseEvent e)
{
if(numEllissi>=ellisse.length)
return;
int x2 = e.getX();
int y2 = e.getY();
if (x2>=x1)
{
int l = x2-x1;
if (y2>=y1)
{
int h = y2-y1;
ellisse[numEllissi] =new Ellipse2D.Double(x1,y1,l,h);
}
else
{
int h =(y1-y2);
ellisse[numEllissi] =new Ellipse2D.Double(x1,y2,l,h);
}
}
else
{
int l=x1-x2;
if (y2>=y1)
{
int h = y2-y1;
ellisse[numEllissi] =new Ellipse2D.Double(x2,y1,l,h);
}
else
{
int h =y1-y2;
ellisse[numEllissi] =new Ellipse2D.Double(x2,y2,l,h);
}
}
numEllissi++;
lineaCorrente = null;
                  
if(numEllissi==ellisse.length)
return;
repaint();
}
}
class AscoltaMovimento extends MouseMotionAdapter
{
public void mouseDragged(MouseEvent e)
{
if(numEllissi>=ellisse.length)
return;
int x = e.getX();
int y = e.getY();
Point2D.Double p = new Point2D.Double(x, y);
lineaCorrente = new Line2D.Double(inizio,p);
repaint();
}
}
MouseAdapter ascoltaEventi = new AscoltaClick();
addMouseListener(ascoltaEventi);
MouseMotionAdapter ascoltaMosse=new AscoltaMovimento();
addMouseMotionListener(ascoltaMosse);
}
public void paint(Graphics g)
{
Graphics2D g2 = (Graphics2D) g;
g2.clearRect(0,0,getWidth(),getHeight());
g2.setColor(Color.blue);
g2.setStroke(continuo);
for(int i=0; ig2.draw((Shape) ellisse);

g2.setColor(Color.black);
g2.setStroke(tratteggio);
if(lineaCorrente!=null)
g2.draw(lineaCorrente);
}
}

questo è uno dei programmi che dovrei inserire...spero tu possa aiutarmi!!!
grazie cmq x la pazienza!! :D

marcoff

Nel senso che devono essere metodi della classe principale... oppure puoi anche creare una classe per ogni forma e importarli nel tuo programma.

Benna ma sta andando di moda ultimamente sto Java paint?;)

.... when i am good, i am good..... when i am bad, i am better...

benna

Devi copiare il codice del secondo programma nei metodi omonimi del primo programma
Esempio:
public void paint(...){
...
istruzioni del metodo paint() della classe ProgrammaBis
...
istruzioni del metodo paint() della classe Ellisse
...
}
Ricordati di copiare anche le inizializzazioni che hai fatto nella classe Ellisse

Marcoff: proprio così, questo però è il primo che utilizza swing invece di awt
Sere: iniziamo un sondaggio: chi ti ha chiesto di fare questo programma?



Questo messaggio è stato aggiornato da benna il 05/10/2007  alle ore  21:07:34

Questo messaggio è stato aggiornato da benna il 05/10/2007  alle ore  21:09:08

Sere

ok,vi ringrazio...domani ci provo...ora a quest'ora nn ce la faccio proprio...;)
Cmq di sicuro avrò ancora bisogno del vostro aiuto se sarete così gentili da darmi retta...cmq x risp alla vostra domanda...il programma me lo ha dato da fare una prof,è un'esercitazione ma nn ci capisco nulla come ben vedete...uff!è una cifra che ci sto impazzendo sopra...mah,se continuo così forse nn lo finirò mai...:o
vabbè,data l'ora notte a tutti!!! :D

Sere

Scusatemi,rieccomi,ma nn ci riesco con il copia-incolla...lo so,di sicuro so stupida io...sbaglierò delle cose assolutamente ovvie...ma ad esempio già nn so dove devo mettere il costruttore dell'ellisse...mi da una cifra di errori come ho fatto io...uffi...ma xkè sono così incapaceeee!!!! :(
vi prego nn uccidetemi,lo so che vi sto rompendo ma siete la mia unica salvezza!!!

benna

Se fai il copia-incolla però devi stare attenta che non ci siano variabili con lo stesso nome fra i due programmi, se ci sono devi rinominarle