Discussione: Come si fa ?
View Single Post
Old 08-05-2007, 11:26   #125
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
La griglia dell'audiogramma è un componente di una certa complessità. Avere qualche problema nel realizzarlo non è cosa di cui stupirsi.

Puoi costruire un programma componendo le soluzioni che trovi in prototipi creati separatamente.

Prova a scrivere un'applicazione che apre una finestra dentro a cui c'è un componente nel quale è disegnata quella mini-griglia. Lo scheletro potrebbe essere:

Codice:
import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;

public class Main {
	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				buildAndShow();
			}
		});
	}

	private static void buildAndShow() {
		JFrame frame = new JFrame("Grid sample");
		GridPanel panel = new GridPanel();
		frame.add(panel);
		frame.pack();
		frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		frame.setVisible(true);
	}
}

class GridPanel extends JComponent {
	private int colWidth = 50;
	private int rowHeight = 50;
	private int rowCount = 5;

	public Dimension getPreferredSize() {
		Dimension standardSize = super.getPreferredSize();
		standardSize.width = colWidth;
		standardSize.height = rowCount * rowHeight;
		return standardSize;
	}

	public void paint(Graphics graphics) {
		Graphics2D g = (Graphics2D)graphics;
		//pronti via:...
	}
}
Troverai una soluzione per un caso speciale: quello dell'immagine che hai allegato. Una volta trovata quella soluzione speciale potrai tentare di generalizzarla. Passerai dal realizzare una griglia in cui le prime due righe sono alte H, la terza e la quarta H/2, la quinta H, ad una griglia in cui le righe possono avere altezza H o H/2. Dovrai stabilire un modo per identificare le righe che hanno altezza H e quelle che hanno altezza H/2. Poi provi ad trasportare la soluzione nel PainterAudiogramma. Se il PainterAudiogramma si dimostri "ostile" a questa mutazione lo prendi, lo butti nel cestino e ne fai uno più docile.

Calma, sangue freddo e coltello tra i denti.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso