Torna indietro   Hardware Upgrade Forum > Software > Programmazione

HUAWEI Pura 70 Ultra: il cameraphone è di nuovo tra noi con un ma! Recensione 
HUAWEI Pura 70 Ultra: il cameraphone è di nuovo tra noi con un ma! Recensione 
HUAWEI continua a marciare sul mondo mobile cercando di fare un po’ tutto in casa propria dopo il ban USA e la perdita dei servizi di Google e altro. Il risultato più importante è senza dubbio questo HUAWEI Pura 70 Ultra, un camera phone dalle prestazioni incredibili che rimette in gioco l’azienda grazie anche ai servizi di Google più facilmente installabili.   
Edge 50 Ultra: Motorola convince anche con il suo top di gamma! La recensione
Edge 50 Ultra: Motorola convince anche con il suo top di gamma! La recensione
Motorola sfida i top di gamma con funzionalità AI avanzate, design innovativo e prestazioni da vero flagship. Riuscirà a trovare spazio anche nel segmento premium di mercato? Tutti i dettagli, test e prezzo di questo nuovo smartphone.
FlexiSpot E7B-PRO: una scrivania motorizzata per migliorare la postura
FlexiSpot E7B-PRO: una scrivania motorizzata per migliorare la postura
Abbiamo ricevuto e provato la scrivania FlexiSpot E7B-PRO. Dotata di gambe motorizzate, è una scrivania di nuova generazione regolabile in altezza, perfetta sia per le attività professionali che per l'intrattenimento.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 08-05-2007, 08:48   #121
thebol
Senior Member
 
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
Quote:
Originariamente inviato da spillo491 Guarda i messaggi
Ma il metodo getClass() restituisce quale classe ?
da quel che ho capito non restituisce nessuna classe, ma restituisce un url che punta all percorso passato. La base del percorso è il classpath dell'applicazione.

Ultima modifica di thebol : 08-05-2007 alle 09:02.
thebol è offline   Rispondi citando il messaggio o parte di esso
Old 08-05-2007, 09:54   #122
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Il metodo getClass() restituisce un riferimento di tipo Class<X>. Questo riferimento di tipo Class<X> è la classe dell'istanza che subisce l'invocazione getClass(). Genere:

String s = new String();
Class<String> c = s.getClass();

Integer n = new Integer(10);
Class<Integer> c = n.getClass();

Pippo p = new Pippo();
Class<Pippo> c = p.getClass();

eccetera.

Ogni classe è associata al suo caricatore (ClassLoader). Il caricatore di classi è un oggetto che trova, legge traduce e carica nella jvm il codice byte contenuto nei file class.

Il metodo getResource delle istanze della classe Class<T> usa la capacità del caricatore di classi di trovare dei file.
__________________
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
Old 08-05-2007, 10:06   #123
thebol
Senior Member
 
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
Quote:
Originariamente inviato da PGI-Bis Guarda i messaggi
Il metodo getClass() restituisce un riferimento di tipo Class<X>. Questo riferimento di tipo Class<X> è la classe dell'istanza che subisce l'invocazione getClass(). Genere:

String s = new String();
Class<String> c = s.getClass();

Integer n = new Integer(10);
Class<Integer> c = n.getClass();

Pippo p = new Pippo();
Class<Pippo> c = p.getClass();

eccetera.

Ogni classe è associata al suo caricatore (ClassLoader). Il caricatore di classi è un oggetto che trova, legge traduce e carica nella jvm il codice byte contenuto nei file class.

Il metodo getResource delle istanze della classe Class<T> usa la capacità del caricatore di classi di trovare dei file.
in effetti l'avevo spiegata malissimo... il getClass() serve per avere un "appiglio" per il classLoader
thebol è offline   Rispondi citando il messaggio o parte di esso
Old 08-05-2007, 10:37   #124
spillo491
Member
 
Iscritto dal: Dec 2006
Messaggi: 201
Sono riuscito a eliminare i valori di deicbel non voluti dalla griglia ma ho difficoltà a spostare le etichette e le righe corrispondenti a 25 e 55 decibel !
In pratica per 25 (quindi anche 30) e 55 (quindi anche 60) ho un'altezzaEtichettaDecibel diversa e una altezzaRiga diversa. precisamente la metà

Sono riuscito a farlo per il 25 ma il codice è illeggibile e confuso

Codice PHP:
Collection<DecibelvaloriDecibelbis Utils.creaInsiemeDecibel(
              
1020253040,505560708090100);
        for(
Decibel d valoriDecibelbis) {

            
String testo String.valueOf(d);
            if(
d.intValue() == 25) {
                
testo "Normale " testo;
            }
                        
                        
            
double yArea origine.getY() + indiceScorrimentoDecibel altezzaEtichetteDecibel;
                        if(
d.intValue() == 30) {
                
yArea  origine.getY() + indiceScorrimentoDecibel altezzaEtichetteDecibel-altezzaEtichetteDecibel/2;
            }
                        if(
d.intValue() == 25 || d.intValue() == 30) {
                                
altezzaEtichetteDecibel altezzaEtichetteDecibel/2;
            }
                        if(
d.intValue() > 30) {
                            
yArea  origine.getY() + (indiceScorrimentoDecibel-1) * altezzaEtichetteDecibel;
                        }
                        
            
Rectangle2D area = new Rectangle2D.Double(
                
xArea MARGINE_DESTRO_ETICHETTE_DECIBEL,
                
yArea MARGINE_BASSO_ETICHETTE_DECIBEL,
                
larghezzaEtichetteDecibel,
                
altezzaEtichetteDecibel);
            
disegnaStringaInBassoADestra(areagraphicsdati.getFontEtichette(), testo);
            
indiceScorrimentoDecibel++;
                        
altezzaEtichetteDecibel calcolaAltezzaEtichetteDecibel(
            
audiogrammagraphicsdati);
                        
        } 
Questo è il mio problema usuale, non riesco a implementare un algoritmo per far fare quello che voglio alla JVM.
Forse disegnare prima le etichette dei multipli di 10 e poi quelle di 25 e 55 ?
Immagini allegate
File Type: jpg decibel.JPG (5.1 KB, 3 visite)

Ultima modifica di spillo491 : 08-05-2007 alle 11:00.
spillo491 è offline   Rispondi citando il messaggio o parte di esso
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
Old 08-05-2007, 19:29   #126
spillo491
Member
 
Iscritto dal: Dec 2006
Messaggi: 201
Perchè mi da errore ?

Codice PHP:
import java.awt.*;
import java.awt.font.*;
import java.awt.geom.*;

class 
GridPanel extends JComponent {
    private 
int colWidth 50;
    private 
int rowHeight 50;
    private 
int rowCount 5;
        
Point2D origine = new Point2D.Double(1,1);

    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;
           
graphics.setPaint(Color.BLACK);
                   
           
Rectangle2D.Double bordoGriglia 
              new 
Rectangle2D.Double(origine.getX(), origine.getY(),colWidth,rowHeight*rowCount);

           
graphics.draw(bordoGriglia);

    }

Mi dice che non trova la classe JComponent
spillo491 è offline   Rispondi citando il messaggio o parte di esso
Old 08-05-2007, 19:36   #127
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Ti do un indizio. Guarda le dichiarazioni import che hai fatto. Poi guarda in che package sta JComponent.
__________________
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
Old 08-05-2007, 20:07   #128
spillo491
Member
 
Iscritto dal: Dec 2006
Messaggi: 201
Giusto , devo importare javax.swing. Per usare setpaint non basta importare java.awt.* ?
spillo491 è offline   Rispondi citando il messaggio o parte di esso
Old 08-05-2007, 20:18   #129
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
La clausola

import

a meno che non sia

import static

importa le definizioni dei tipi. Classi, interfacce, enumerativi, annotazioni. Vale a dire che tu scrivi:

import java.awt.*;

non per usare "setPaint" ma per usare (tra gli altri) "Graphics". Poi le istanze di Graphics hanno un metodo setPaint ma il fatto che tu possa usare setPaint non dipende dalla clausola import.
__________________
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
Old 08-05-2007, 20:27   #130
spillo491
Member
 
Iscritto dal: Dec 2006
Messaggi: 201
Ok ho capito devo usare un oggetto Graphics2D quindi dire

g.setPaint non graphics.setPAint
spillo491 è offline   Rispondi citando il messaggio o parte di esso
Old 08-05-2007, 20:30   #131
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
No. Ni. Non lo so. Prima ho scritto "per usare setPaint devi avere Graphics" ma ho sbagliato. setPaint è un metodo di Graphics2D, non di Graphics. A parte questo il resto vale. Cioè Graphics2D "ti arriva" perchè importi il package java.awt.*
__________________
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
Old 09-05-2007, 10:13   #132
spillo491
Member
 
Iscritto dal: Dec 2006
Messaggi: 201
Ciao PGi sono riuscito a scrivere questo codice ed ottenere quel disegno che avevvo messo in allegato, adesso devo riuscire a generalizzarlo ? Ti sembra un buon inizio ?

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

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;
        
Point2D origine = new Point2D.Double(10,10);
        private 
int rowHeightbis 50;
        private 
double y origine.getY();
        private 
Font fontEtichette = new Font("Serif"Font.PLAIN12);
 

    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;
           
int [] valoriDecibel = {1020253040};
 
           
g.setPaint(Color.BLACK);
           
          for(
int i=0i<valoriDecibel.lengthi++){
        
            if(
valoriDecibel[i] == 25||valoriDecibel[i]==30rowHeightbis rowHeightbis/2;
            
Rectangle2D.Double area = new Rectangle2D.Double(
                
origine.getX(), 
                
y,
                
colWidth,
                
rowHeightbis);
            
g.draw(area);
            
disegnaStringaInBassoADestra(areafontEtichette String.valueOf(valoriDecibel[i]));
            
+= rowHeightbis;
            
rowHeightbis 50;
          }
    }


        private 
void disegnaStringaInBassoADestra(Rectangle2D areaGraphics2D graphicsFont fontString 

text
) {
        
FontRenderContext context graphics.getFontRenderContext();
        
TextLayout layout = new TextLayout(textfontcontext);
        
Rectangle2D bounds layout.getBounds();
        
double y area.getY() + bounds.getHeight() + (area.getHeight()-bounds.getHeight());
        
double x area.getX() + area.getWidth() - bounds.getWidth();
        
graphics.setPaint(Color.BLACK);
        
layout.draw(graphics, (float)(x), (float)(y));
    }

spillo491 è offline   Rispondi citando il messaggio o parte di esso
Old 09-05-2007, 10:44   #133
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
C'è un problema di "accumulo". Prova a ridimensionare la finestra. Noterai che la griglia scompare. A rallentatore si vede che schizza verso il basso.

Il metodo paint è invocato dall'API Swing più e più volte. Se usi dei campi come valori di riferimento devi fare in modo che quei campi abbiano il valore corretto a prescindere dal numero di volte per cui è invocato il metodo in cui li usi.

Nel caso di specie, il problema è che il campo "y" viene incrementato nel metodo paint. Questo valore dovrebbe essere 10 (origine.getY()) all'inizio del disegno ma invocazioni successive di paint si ritrovano ad avere un y che vale inizialmente "sempre di più".

Per correggere il problema è sufficiente trasformare la dichiarazione di origine e y da dichiarazione di campo a dichiarazione di variabile locale al metodo paint.

Codice:
public void paint(Graphics graphics) { 
	Point2D origine = new Point2D.Double(10, 10);
	double y = origine.getY();
             //eccetera
Ora devi analizzare il codice di PainterAudiogramma e vedere se e come sia possibile trasferire le particolarità di disegno che hai sperimentato.

Il fatto che talune righe sono più basse di altre influisce sulla punto a partire dal quale disegni le rispettive linee. E' una cosa che certamente hai già notato perchè il codice che hai incollato verifica questa condizione mutando il valore di incremento per y.

Si può fare la stessa cosa in PainterAudiogramma?

Ricorda che il codice è materia viva, plasmabile. Soprattutto il codice Java. Ad esempio puoi prendere PainterAudiogramma e commentare le linee che vanno da 68 a 140. Ti resta in pratica:

Codice:
	public void paint(Audiogramma audiogramma, Graphics2D graphics, DatiPainterAudiogramma dati) {
		LinkedList<Frequenza> valoriFrequenze = getFrequenzeOrdinateNonNull(audiogramma);
		LinkedList<Decibel> valoriDecibel = getDecibelOrdinatiNonNull(audiogramma);

		double larghezzaColonnaIntestazione = calcolaLarghezzaColonnaIntestazione(
			audiogramma, graphics, dati);
		double altezzaRigaIntestazione = calcolaAltezzaRigaIntestazione(
			audiogramma, graphics, dati);
		graphics.setPaint(Color.BLACK);
		disegnaStringaAlCentro(
			new Rectangle2D.Double(0, MARGINE_BASSO_ETICHETTE_INTESTAZIONE,
				larghezzaColonnaIntestazione, altezzaRigaIntestazione),
			graphics,
			dati.getFontEtichette(),
			"PERDITA IN DECIBEL");
		double altezzaEtichetteDecibel = calcolaAltezzaEtichetteDecibel(
			audiogramma, graphics, dati);
		double larghezzaEtichetteDecibel = calcolaLarghezzaEtichetteDecibel(
			audiogramma, graphics, dati);
		int indiceScorrimentoDecibel = 0;
		Point2D origine = new Point2D.Double(
			larghezzaColonnaIntestazione / 2 + larghezzaEtichetteDecibel,
			altezzaRigaIntestazione);
		double xArea = origine.getX() - larghezzaEtichetteDecibel;

		for(Decibel d : valoriDecibel) {

			String testo = String.valueOf(d);
			if(d.intValue() == 25) {
				testo = "Normale " + testo;
			}
			double yArea = origine.getY() + indiceScorrimentoDecibel * altezzaEtichetteDecibel;
			Rectangle2D area = new Rectangle2D.Double(
				xArea + MARGINE_DESTRO_ETICHETTE_DECIBEL,
				yArea + MARGINE_BASSO_ETICHETTE_DECIBEL,
				larghezzaEtichetteDecibel,
				altezzaEtichetteDecibel);
			disegnaStringaInBassoADestra(area, graphics, dati.getFontEtichette(), testo);
			indiceScorrimentoDecibel++;
		}
/* ... commentato ... */
	}
E' la parte in cui il codice disegna le etichette dei decibel. Puoi introdurre qui un controllo simile a quello che hai sperimentato?
__________________
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
Old 09-05-2007, 11:45   #134
spillo491
Member
 
Iscritto dal: Dec 2006
Messaggi: 201
Si il problema della finestra l'avevo notato, ora ho risolto facendo come mi hai detto tu.

Per quanto riguarda la modifica di PainterAudiogramma dici di mantenere la parte in cui vengono disegnate le etichette e modificare solo la fase in cui disegno la griglia ?
spillo491 è offline   Rispondi citando il messaggio o parte di esso
Old 09-05-2007, 12:07   #135
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Il disegno della griglia dipende dal disegno delle etichette. O, meglio, il disegno delle linee e delle etichette segue la stessa idea di base che, al momento, consiste nell'avere un'altezza iniziale uguale per tutte le righe.

Variando l'altezza delle righe non so quanto il codice già scritto possa essere semplicemente aggiustato.

E' più facile specializzare che generalizzare. Rispetto a quello che vuoi ottenere (cioè la possibilità che alcune righe abbiano altezza diversa dalle altre) il codice di paint è speciale (tutte le righe hanno la stessa altezza).

Io penso che il nuovo paint possa essere diviso in due parti. Nella prima calcoli l'altezza di ogni riga e la rendi accessibile, magari attraverso una struttura dati indicizzata, al resto del codice. Una cosa del genere.

Hai N righe? Crei un array di N interi. Per ogni riga di indice K calcoli la sua altezza e la infili nell'array in posizione K. Dopo aver fatto tutti i conti passi a disegnare le righe, una per volta, in un ciclo indicizzato da 0 a N. Ogni passaggio del ciclo recupera l'altezza di quella riga accedendo al valore di indice x (0 - N) nell'array delle altezze.

E' un po' sintetica come spiegazione ma spero che renda l'idea.
__________________
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
Old 09-05-2007, 12:36   #136
spillo491
Member
 
Iscritto dal: Dec 2006
Messaggi: 201
Tu dici proprio una cosa del tipo ?

int[] altezzaRighe = new int[N]

Ma nel ciclo disegno contemporaneamente etichette e griglia ? no vero, faccio due cicli separati
spillo491 è offline   Rispondi citando il messaggio o parte di esso
Old 09-05-2007, 12:43   #137
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Fai come ti sembra più comodo. Un ciclo solo sarebbe più efficiente ma l'efficienza è una questione di cui non mi occuperei in questo momento.
__________________
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
Old 09-05-2007, 17:20   #138
spillo491
Member
 
Iscritto dal: Dec 2006
Messaggi: 201
Allora ho modificato il metodo calcolaAltezzaEtichetteDecibel come segue:

Codice PHP:
private double[] calcolaAltezzaEtichetteDecibel(
        
Audiogramma audiogramma,
        
Graphics2D graphics,
        
DatiPainterAudiogramma dati)
    {
                
LinkedList<DecibelvaloriDecibel getDecibelOrdinatiNonNull(audiogramma);
                
double[] altezzeRighe = new double[valoriDecibel.size()];
        
double maxValue dati.getMinimaAltezzaRighe();
        
Collection<Decibeldecibels audiogramma.getValoriDecibel();
        for(
Decibel d decibels) {
            if(
== null) continue;
            
String testo String.valueOf(d);
            
double altezza getAreaStringa(
                
testo,
                
graphics,
                
dati.getFontEtichette()).getHeight();
            
maxValue Math.max(altezzamaxValue);
        }
                for(
int i=0i<valoriDecibel.size(); i++){
                    if(
!= && != && != && != 7altezzeRighe[i] = maxValue;
                    else 
altezzeRighe[i] = maxValue/2;
                }
        return 
altezzeRighe;
    } 
e il metodo paint come segue

Codice PHP:
public void paint(Audiogramma audiogrammaGraphics2D graphicsDatiPainterAudiogramma dati) {
        
LinkedList<FrequenzavaloriFrequenze getFrequenzeOrdinateNonNull(audiogramma);
        
LinkedList<DecibelvaloriDecibel getDecibelOrdinatiNonNull(audiogramma);

        
double larghezzaColonnaIntestazione calcolaLarghezzaColonnaIntestazione(
            
audiogrammagraphicsdati);
        
double altezzaRigaIntestazione calcolaAltezzaRigaIntestazione(
            
audiogrammagraphicsdati);
        
graphics.setPaint(Color.BLACK);
        
disegnaStringaAlCentro(
            new 
Rectangle2D.Double(0MARGINE_BASSO_ETICHETTE_INTESTAZIONE,
                
larghezzaColonnaIntestazionealtezzaRigaIntestazione),
            
graphics,
            
dati.getFontEtichette(),
            
"PERDITA IN DECIBEL");
        
double[] altezzaEtichetteDecibel calcolaAltezzaEtichetteDecibel(
            
audiogrammagraphicsdati);
        
double larghezzaEtichetteDecibel calcolaLarghezzaEtichetteDecibel(
            
audiogrammagraphicsdati);
        
int indiceScorrimentoDecibel 0;
        
Point2D origine = new Point2D.Double(
            
larghezzaColonnaIntestazione larghezzaEtichetteDecibel,
            
altezzaRigaIntestazione);
        
double xArea origine.getX() - larghezzaEtichetteDecibel;

        
// disegno le etichette
                
for(Decibel d valoriDecibel) {

            
String testo String.valueOf(d);
            if(
d.intValue() == 25) {
                
testo "Normale " testo;
            }
            
double yArea origine.getY() + indiceScorrimentoDecibel altezzaEtichetteDecibel[i];
            
Rectangle2D area = new Rectangle2D.Double(
                
xArea MARGINE_DESTRO_ETICHETTE_DECIBEL,
                
yArea MARGINE_BASSO_ETICHETTE_DECIBEL,
                
larghezzaEtichetteDecibel,
                
altezzaEtichetteDecibel[i]);
            
disegnaStringaInBassoADestra(areagraphicsdati.getFontEtichette(), testo);
            
indiceScorrimentoDecibel++;
        }
                    
                
                
    } 
Il mio probelma è la i in altezzaEtichetteDecibel[i] che non so come determinare. dovrei avere la posizione del decibel x nella lista ordinata valoriDecibel
spillo491 è offline   Rispondi citando il messaggio o parte di esso
Old 09-05-2007, 17:38   #139
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Il ciclo foreach

for(bli : bla)

è una "comodità". A volte. A volte no. Nel tuo caso è no. Per avere l'indice, puoi cambiare la linea:

Codice:
for(Decibel d : decibels) {
in:

Codice:
for(int indice = 0; indice < decibels.size(); indice++) {
    Decibel d = decibels.get(indice);
    //eccetera
__________________
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
Old 11-05-2007, 14:43   #140
spillo491
Member
 
Iscritto dal: Dec 2006
Messaggi: 201
Ciao PGI purtroppo in questi giorni sarò un po preso dal lavoro e in più ieri mi è partito l'hard-disk del mio portatile era vecchio e dovrò cambiarlo

Spero di poter continuare questo programmino perchè mi ha preso parecchio

ciao
spillo491 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


HUAWEI Pura 70 Ultra: il cameraphone è di nuovo tra noi con un ma! Recensione  HUAWEI Pura 70 Ultra: il cameraphone è di...
Edge 50 Ultra: Motorola convince anche con il suo top di gamma! La recensione Edge 50 Ultra: Motorola convince anche con il su...
FlexiSpot E7B-PRO: una scrivania motorizzata per migliorare la postura FlexiSpot E7B-PRO: una scrivania motorizzata per...
Citroën ë-C3, la prova in anteprima: l'elettrica con caratteristiche e prezzo per tutti Citroën ë-C3, la prova in anteprima: l...
Intel Lunar Lake: le nuove CPU per i notebook del 2024 Intel Lunar Lake: le nuove CPU per i notebook de...
Alan Wake 2 arriverà in formato f...
Narwal Freo X Ultra: il nuovo robot per ...
Presentato ad aprile, è scontato ...
2 portatili ASUS Vivobook in offerta! 49...
TV Samsung 4K 55 pollici a prezzo TOP: e...
Samsung Galaxy Watch 4, 5 e 6 in offerta...
TV 4K 65" Hisense a 499€ e soundbar...
MSI al Computex presenta i monitor Pro: ...
Summer Game Fest 2024: Civilization VII ...
MSI Project Zero e le nuove schede madri...
Le offerte TOP del weekend Amazon: TV 65...
Altoparlanti Bluetooth Marshall: Willen ...
I migliori robot del weekend Amazon: dal...
Chang'e-6: completato il trasferimento d...
Ariane 6: il lancio inaugurale del razzo...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 20:24.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Served by www3v