PDA

Visualizza la versione completa : Programma java.. Consigli!


franc0103
18-06-2010, 15:09
Ciao a tutti.. sto realizzando un programma nel quale tramite il riempimento di una griglia con pixel si devono poter creare delle immagini da usare poi come simboli x le icone....
Finora ho creato la griglia e fatto si che cliccando su ogni pixel venga disegnato un quadrato bianco.. potete darmi una mano a continuare a fare il resto??? Fondamentalmente mi manca come punti piu importanti creare la possibilità di cambiare il colore dei pixel.. poter eliminare i pixel disegnati e far in modo di poter salvare le composizioni create in un file bmp. Il sorgente è questo:

import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import javax.swing.*;
import java.util.*;
import java.lang.*;

public class IconCreator{

public static void main(String args[]){
Windoww win = new Windoww("IconCreator 1.0");
win.setVisible(true);
win.setResizable(false);
win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) ;
}
}

class Windoww extends JFrame{
Pannello p = null;
JButton btn= null;


public Windoww(String name){

super(name);
int xf=1000; //grandezza frame
int yf=1000;
setSize(xf,yf);
p = new Pannello();
add(p);
btn = new JButton("test");
p.add(btn);
//btn.addActionListener(this); //why doesn't work=?=
}
public void actionPerformed(ActionEvent e){

}
}

class Pannello extends JPanel{
Line2D linea=null;
ArrayList pixels;

public Pannello(){
super();
setBackground(Color.black);
setVisible(true);
mouseHandler();
pixels=new ArrayList();
}


public void mouseHandler(){

addMouseListener(new MouseAdapter(){

public void mousePressed(MouseEvent me){
Point p = me.getPoint();
int x=me.getX()/(1000/32);
int y=me.getY()/(1000/32);
System.out.println("Coordinata X:"+x+" Coordinata Y:"+y);
System.out.println(me.getPoint());

pixels.add(new Rectangle2D.Double((1000/32)*x, (1000/32)*y, 1000/32, 1000/32)); //aggiungo un quadrato all'array
repaint();
}//mousePressed
public void mouseClicked(MouseEvent me){//x ora inutile
if(me.getClickCount()>1){
}
}
});
}

public void paint(Graphics g2){
Graphics2D g=(Graphics2D)g2;
super.paint(g2);
int k=getWidth()/32;
int j=k;
int h=k;

g2.setColor(Color.magenta);

for(int i=0; i<32; i++){
g2.drawLine(0, j, getWidth(), j);
j=k+j;
}
for(int i=0; i<32; i++){
g2.drawLine(h, getHeight(), h, 0 );
h=k+h;
}
Color x= Color.WHITE;
g.setColor(x);
for(int i=0; i<pixels.size(); i++){

g.draw((Rectangle2D)(pixels.get(i)));
g.fill((Rectangle2D)(pixels.get(i)));
}
}
}



grazie in anticipo

LeleFT
18-06-2010, 16:21
Java ha una sezione dedicata e, come tutti i forum, un regolamento interno (http://forum.html.it/forum/showthread.php?s=&threadid=973889).
Tutti i regolamenti interni a queste aree richiedono che, quando si apre una nuova discussione, il titolo sia esplicativo del problema trattato e non, come in questo caso, generale.

Inoltre, è necessario usare gli appositi tag CODE quando si posta del codice, per renderlo leggibile e mantenerne l'indentazione.

E' specificato, inoltre, che in queste sezioni non viene realizzato codice pronto, ma si discute di un problema specifico con del codice che non funziona. Per tipi di richieste finalizzate alla produzione di codice c'è il forum "Offro Lavoro / Collaborazione".


Devo chiudere questa discussione... puoi aprirne una nuova, più specifica, nel forum Java, seguendo le linee guida del regolamento linkato.


Ciao. :ciauz:

Loading