Newsgroup: it.comp.java
Titolo: Mandare a capo la scritta in un Button

È possibile in AWT  (anche definendo in qualche modo una classe che estenda 
Button, eventualmente)?
\n e System.getProperty("line.separator") non funzionano.


(come al solito) semplicemente cercado su google le parole:
  "jbutton multiline text"
il primo link e':
http://javaalmanac.com/egs/javax.swing/button_MultiLine.html
dice di passare semplicemente con il setText una String cosi' fatta
String label = "<html>"+"This is a"+"<br>"+"swing button"+"</html>";
jButton1.setText(label);
e funziona...
{2Nd+BeSt}

 e funziona...
Già letto, e provato... funziona in swing, sicuramente, ma il mio povero 
Button (sì. Button, NON jButton, come scritto nell'oggetto) visualizza:
<html>This is a<br>swing button</html>
Il tutto con Button b=new Button("<html>"+"This is a"+"<br>"+"swing 
button"+"</html>");, visto che il metodo seText non esiste in awt.
Ma so che swing è stato scritto interamente in awt da SUN, quindi quello che 
si può fare in swing dovrebbe potersi fare, in qualche modo, anche in awt, o 
sbaglio? E come?
N.B. L'unica volta che ho provato ad usare swing il mio Internet Explorer 6 
si è incazzato come una bestia, finchè non ho attivato il Java di Sun. Da 
allora, per compatibilità con i browser meno aggiornati tuttora in giro, 
l'ho bandito dai programmi che scrivo per la rete. 

 
ti chiedo scusa, non avevo capito...
mi sa che ti toccare ridefinire il paint()
e "draw"are le stringhe tu...
{2Nd+BeSTt}

 ha scritto nel messaggio 
news:XXY1e.34218$zZ1.1...@twister1.libero.it...

Accidenti, non ci avevo pensato!
Grazie, ora provo.
Marco 

> e "draw"are le stringhe tu...
Funziona... salvo per un piccolo, ma fastidioso dettaglio: non riesco a 
centrare bene le scritte.
Infatti, non posso prevedere quanto spazio orizzontale occuperà un singolo 
carattere, per cui il mio tentativo di togliere alla metà della larghezza 
del Button un multiplo (3,5 volte) della lunghezza della stringa, se centra 
una stringa, non va bene per un'altra. O perlomeno, il risultato è 
sufficiente, ma non ottimale. C'è modo di conoscere quanto spazio 
orizzontale occuperà drawString?
  public void paint(Graphics g)
   {
    super.paint(g);
    Dimension d=this.getSize();
    int dy=d.height/(testo.length+1)+1;
    for (int i=0;i<testo.length;i++)
     {g.drawString(testo[i],(d.width-7*testo[i].length())/2,dy/4+dy*(i+1));} 
   }
 } 

 orizzontale occuperà drawString?
java.awt.FontMetrics

 java.awt.FontMetrics
Grazie, così mi sembra Ok.
Marco
  public void paint(Graphics g)
 {
  super.paint(g);
  Dimension d=this.getSize();
  int dy=d.height/(testo.length+1)+1;
  FontMetrics metricaFont = getFontMetrics(g.getFont());
  for (int i=0;i<testo.length;i++)
   {g.drawString(testo[i],(d.width-metricaFont.stringWidth(testo[i]))/2,dy/4+dy*(i+1));}
 }

Per completezza, se può servire a qualcun altro:
import java.io.*;
import java.awt.*;
public class ButtonMultiline extends Button
 {
  String[] texts;
  public ButtonMultiline(String[] t)
   {
    super();
    texts=t;
   }
  public void paint(Graphics g)
   {
    super.paint(g);
    Dimension d=this.getSize();
    int dy=d.height/(testo.length+1)+1;
    FontMetrics metricaFont = getFontMetrics(g.getFont());
    for (int i=0;i<texts.length;i++)
     {g.drawString(texts[i],(d.width-metricaFont.stringWidth(texts[i]))/2,dy/4+dy*(i+1));}
   }
 }