Se vuoi ho abbozzato una semplicissima classe, abbastanza incompleta e decisamente migliorabile:
Questa classe la puoi usare all'interno del tuo progetto, nel modo seguente:codice:import java.awt.*; import javax.swing.*; public class Grafico extends JPanel { private int [] valori; private int [] valNorm; private int max; private int valMax; private boolean drawChart; public Grafico() { this( new int[0] ); } public Grafico(int [] valori) { this.valori = valori; valNorm = new int[valori.length]; drawChart = false; cercaMax(); } public void setValori(int [] valori) { this.valori = valori; valNorm = new int[valori.length]; cercaMax(); normalizza(); } public void disegna() {drawChart = true; repaint(); } public void paint(Graphics g) { if (drawChart) { for (int i=0; i<valori.length; i++) { g.fillRect((i*20 + 10), (valMax - valNorm[i])+10 , 10, getHeight()); } g.drawRect(0, 0, getWidth()-1, getHeight()-1); } } private void cercaMax() { for (int i=0; i<valori.length; i++) max = (valori[i] > max) ? valori[i] : max; } private void normalizza() { int altezza = getHeight()-10; for (int i=0; i<valori.length; i++) { valNorm[i] = (altezza * valori[i]) / max; if (valori[i] == max) valMax = valNorm[i]; System.out.println(valNorm[i]); } } }
Ciao.codice:import java.awt.*; import javax.swing.*; import java.awt.event.*; public class Finestra extends JFrame { private Grafico g; public Finestra() { getContentPane().setLayout(null); setTitle("Titolo"); setSize(800, 600); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); show(); } public void visualizza() { g = new Grafico(); int [] valori = {10, 7, 12, 20, 18, 6, 15, 7, 25, 50, 5, 32, 8, 7, 7, 7, 34}; g.setBounds(50, 50, 500, 500); getContentPane().add(g); g.setValori(valori); g.disegna(); } public static void main(String [] args) { Finestra f = new Finestra(); f.visualizza(); } }![]()



Rispondi quotando