PDA

View Full Version : [JAVA] JLabel che non si sposta!!


caralu
10-09-2006, 20:09
Ciao a tutti! Un'altra incognita nel mio progetto, una cosa che non riesco a spiegarmi:
Creo una JLabel e la carico sopra un JFrame, setto le coordinate di comparsa del JLabel in un determinato punto, ma invece me lo visualizza in un'altro punto! Qualsiasi coordinate gli setti alla JLabel questa rimane fissa nello stesso punto!
Vi posto un po di codice:

----------------------------------
//Sono nel costruttore della classe: qua inizializzo tutte le variabili
//Assegno un nuovo riferimento alla mia JLabel
labelPunti = new JLabel();
//Setto il mio Font:
labelPunti.setFont(new Font(labelPunti.getFont().getName(),Font.BOLD,20));
labelPunti.setBackground(Color.red); //Imposto colore di sfondo della JLabel
//POSIZIONO LA LABEL IN QUESTE COORDINATE (ma anche cambiandole non
//risolvo niente!!!!)
labelPunti.setBounds(400, 400, 100, 200);
//Aggiungo la JLabel sopra il mio frame
frame.add(labelPunti, JLayeredPane.PALETTE_LAYER);
-----------------------------------
//In questo metodo ad ogni iterazione del ciclo while disegno nuovamente la
//JLabel e altri elementi nel JFrame:

while(gameRunning)
{
Graphics2D g = (Graphics2D) strategy.getDrawGraphics();

// clear the screen
g.setColor(Color.black);
g.fillRect(0,0,1024,768); //A tutto schermo

// render our game objects
g.translate(0, 30); //Sposto l'oggetto grafico principale che dovrò disegnare

g.setColor(Color.red);
//Aggiorno il valore del punteggio nella JLabel, settando il nuovo testo
labelPunti.setText("PUNTI" + punteggio);
labelPunti.paint(g);
.........//Eseguo qua le altre funzioni del ciclo
}

Come mai mi visualizza la JLabel a coordinate (più o meno) 0, 100????

MEMon
10-09-2006, 21:42
Non tutti i layout permettono di posizionare gli oggetti a coordinate assolute. Nel tuo caso è probbaile che i layout che usi quindi non lo permette.

Comunque hai fatto un po' si pasticci, richiami il metodo paint di un Jlabel, perchè? Poi usi un componente swing con componenti awt, ti consiglio di togliere la jlabel e di scrivere i tuoi punteggi con:

g.drawString("PUNTI" + punteggio,400,400);

caralu
10-09-2006, 22:00
g.drawString("PUNTI" + punteggio,400,400);

E se io volessi cambiare Font e dimensione di questa stringa, è possibile con i metodi di awt?

MEMon
10-09-2006, 22:01
certo g.setFont(Font);

caralu
11-09-2006, 11:31
certo g.setFont(Font);
Perfetto, grazie 1000! é proprio quello che fa per me! Ho visto che posso impostare dimensione, colore e posizione come meglio voglio, grazie!