Allora ragazzi, salve a tutti. Ho un problema da cui non riesco a venirne fuori (è più di un'ora che ci stò ragionando

).
Stò facendo un programma in Java che gestisce il database di una fittizia casa edistrice. Ho deciso di fare in modo che l'utente possa visualizzare l'istogramma delle vendite dei numeri di una collana. Così ho scritto un codice per disegnare questo istogramma:
Codice:
public void paintComponent(Graphics g) {
super.paintComponent(g);
int max = findMax(this.venduti);
g.setColor(new java.awt.Color(160, 175, 219));
for (int i = 0; i < dim; i++) {
g.fillRect(30 + i * 50, 25, 30, Math.round((250 * (Integer) venduti[i][1]) / max));
}
Nota: l'array bidimensionale che vedete contiene il numero i-esimo della collana e al suo fianco il numero di prodotti venduti di tale numero.
Il problema è che il fillRect mi considera il conteggio dei pixel a partire da in alto a sx anzichè dal basso a sx. Ecco quindi cosa ne viene fuori:
Ovvero l'istogramma esce fuori ribaltato.
Considerate che il JPanel ha altezza
300 pixel.
Ho deciso di usare sia un margine alto che un margine basso ciascuno di
25 pixel. Ecco perchè nella proporzione ho assegnato al libro di collana con maggior numero di vendite un rettangolo di altezza
250.
Il metodo fillRect è il seguente:
fillRect(int x, int y, int width, int height)
Ovvero disegna un rettangolo il cui angolo in alto a sinistra è nelle coordinate x,y; il rettangolo è largo WIDTH ed è alto HEIGHT (quindi niente altezze negative).
Potete darmi una mano?