ciao a tutti
vorrei che la mia matrice fosse riempita con una tonalità sfumata rosso/arancio UGUALE in ogni casella e non unica per tutta la matrice. vi posto le due classi
Questo è il maincodice:import java.awt.Color; import java.awt.Dimension; import java.awt.GradientPaint; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.geom.Rectangle2D; import javax.swing.JPanel; public class MatrixPanel extends JPanel{ protected Rectangle2D.Double [][] rect; protected GradientPaint [][] colorrect; private int row,column; private final int LATO = 30; //costruttore public MatrixPanel(int row,int column){ super(); this.row = row; this.column = column; this.rect = new Rectangle2D.Double [this.row][this.column]; this.colorrect = new GradientPaint [this.row][this.column]; //inizializzo matrice di rettangoli for(int i=0;i<this.row;i++){ for(int j=0;j<this.column;j++){ this.rect[i][j] = new Rectangle2D.Double(20+(i*this.LATO),20+(j*this.LATO),this.LATO,this.LATO); } } //inizializzo la matrice dei colori for(int i=0;i<this.row;i++){ for(int j=0;j<this.column;j++){ GradientPaint gp1 = new GradientPaint(0,0,Color.RED,0, 70,Color.ORANGE); this.colorrect[i][j] = gp1; } } } //lo disegna @Override public void paintComponent(Graphics g){ super.paintComponent(g); Graphics2D g2d = (Graphics2D)g; setBackground(Color.WHITE); for(int i=0;i<this.row;i++){ for(int j=0;j<this.column;j++){ g2d.setPaint(this.colorrect[i][j]); g2d.fill(this.rect[i][j]); g2d.setColor(Color.black); g2d.draw(this.rect[i][j]); } } } }
Grazie mille in anticipocodice:import java.awt.Container; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.JFrame; public class MatrixFrame extends JFrame{ private MatrixPanel mtx; public MatrixFrame(){ super("matrice 4x3"); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.mtx = new MatrixPanel(3,4); Container contPane = this.getContentPane(); contPane.add(this.mtx); this.pack(); } public static void main(String[] args) { javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { new MatrixFrame().setVisible(true); } }); } // end method main() }![]()

Rispondi quotando
