Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/11/2006, 05:28
Avatar de dakar
dakar
 
Fecha de Ingreso: octubre-2005
Mensajes: 10
Antigüedad: 20 años, 11 meses
Puntos: 0
Formato de textos

Hola, hace poco que estoy en el mundo del Java. He buscado un buen tutorial (en castellano) que explique correctamente Applets y AWT, pero no lo encuentro. Les agradecería mucho si me pudieran ayudar...

Intento facer una clase para formatear textos (fuente, medida, estilo y color). Pueden verla más abajo. Pero me encuentro con un problema. Al cambiar la fuente ocurren dos cosas: el label lTest solo visualiza unas pocas fuentes, en cambio con drawString (en "paint") se ven muchas más pero las fuentes gráficas aparecen como cuadritos. ¿Cúal es el motivo y qué debo hacer para que funcione correctamente?

Código PHP:
import java.applet.Applet;
import java.awt.*;
import java.util.Vector;

public class 
Formato extends Applet {
    
    
Label lIdioma, lFont, lTest;
    
Choice cIdioma, cFont, cMida, cColor;
    
Font fFont;
    
Color color;
    
String sText;
    

    public 
void init() {
        
setLayout( null );
        
setBackground( Color.lightGray );

        
lTest = new Label( "provaaaaaaaaannnnt" );
        
add( lTest );
        
lTest.reshape(100, 100, 200, 24);
        
lTest.setForeground( Color.yellow );
        
        
lIdioma = new Label( "Idioma" );
        
add( lIdioma );
        
lIdioma.reshape(20, 20, 50, 24);
        
        
cIdioma = new Choice();
        
cIdioma.addItem( "Castellano" );
        
cIdioma.addItem( "Català" );
        
add( cIdioma );
        
cIdioma.reshape(100, 20, 120, 24);
            
        
lFont = new Label( "Font" );
        
add( lFont );
        
lFont.reshape(20, 50, 50, 24);
        
        
cFont = new Choice(); 
        
GraphicsEnvironment gEnv = GraphicsEnvironment.getLocalGraphicsEnvironment();
        
String envfonts[] = gEnv.getAvailableFontFamilyNames();
        
Vector vector = new Vector();
        for ( 
int i = 1; i < envfonts.length; i++ ) {
            
vector.addElement(envfonts[i]);
            
cFont.addItem(envfonts[i]);
        }        
        
add( cFont );
        
cFont.reshape(100, 50, 180, 24);
        
        
cMida = new Choice();
        
cMida.addItem( "10" );
        
cMida.addItem( "12" );
        
cMida.addItem( "14" );
        
cMida.addItem( "16" );
        
cMida.addItem( "18" );
        
add( cMida );
        
cMida.reshape(290, 50, 50, 24);

        
cColor = new Choice();
        
cColor.addItem( "amarillo" );
        
cColor.addItem( "añil" );
        
cColor.addItem( "azul" );
        
cColor.addItem( "blanco" );
        
cColor.addItem( "gris" );
        
cColor.addItem( "gris claro" );
        
cColor.addItem( "magenta" );
        
cColor.addItem( "naranja" );
        
cColor.addItem( "negro" );
        
cColor.addItem( "rojo" );
        
cColor.addItem( "rosa" );
        
cColor.addItem( "verde" );
        
cColor.addItem( "verde claro" );
        
add( cColor );
        
cColor.reshape( 350, 50, 100, 24 );
    
        
fFont = new Font("Alibi", Font.PLAIN, 10);
        
color = Color.yellow;
        
sText = "Texto de prueba...";
    }
    
    public 
void paint( Graphics g ) 
    { 
      
g.setFont( fFont );
      
g.setColor( color );
      
g.drawString( sText, 100, 140 );
    } 
    
    public 
boolean handleEvent( Event evt ) {
        if( 
evt.target == cIdioma && evt.id == 1001 ) {
            
lTest.setText( cIdioma.getSelectedItem() );
            
            if ( 
cIdioma.getSelectedIndex() == 0 )
                
sText = "Texto de prueba...";
            else
                
sText = "Text de prova...";
            
repaint();
            
            return( 
true );
        }
        else if(( 
evt.target == cFont || evt.target == cMida ) && evt.id == 1001 ) {
            
int iMida = new Integer( cMida.getSelectedItem() );

            
lTest.setFont( new Font(cFont.getSelectedItem(), Font.PLAIN, iMida) );
            
            
fFont = new Font(cFont.getSelectedItem(), Font.PLAIN, iMida);
            
repaint();
        }
        else if( 
evt.target == cColor && evt.id == 1001 ) {
            switch( 
cColor.getSelectedIndex() ) {
            case 
0: color = Color.yellow; break;
            case 
1: color = Color.blue; break;
            case 
2: color = Color.cyan; break;
            case 
3: color = Color.white; break;
            case 
4: color = Color.gray; break;
            case 
5: color = Color.darkGray; break;
            case 
6: color = Color.magenta; break;
            case 
7: color = Color.orange; break;
            case 
8: color = Color.black; break;
            case 
9: color = Color.red; break;
            case 
10: color = Color.pink; break;
            case 
11: color = Color.green; break;
            case 
12: color = Color.lightGray; break;
            }
            
repaint();
            
            
lTest.setForeground( color );
        }
        switch( 
evt.id ) {
        default:
            return( 
false );
        }
    }
} 

Y por último una consulta: ¿es posible que los desplegables incluyan elementos gráficos?
1- que en el desplegable de fuentes, cada linea aparezca formateada con su fuente correctamente.
2- que el desplegable de color incluya recuadros de colores
3- o que en el desplegable de color cada linia se vea en su color
4- igualmente con los estilos (normal, cursiva,...)

Les agradezco de antemano su ayuda, pues ando un poco perdido entre tantas clases, layouts, eventos, ...