Foros del Web » Programación para mayores de 30 ;) » Java »

Formato de textos

Estas en el tema de Formato de textos en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 12/11/2006, 05:28
Avatar de dakar  
Fecha de Ingreso: octubre-2005
Mensajes: 10
Antigüedad: 18 años, 6 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 lIdiomalFontlTest;
    
Choice cIdiomacFontcMidacColor;
    
Font fFont;
    
Color color;
    
String sText;
    

    public 
void init() {
        
setLayoutnull );
        
setBackgroundColor.lightGray );

        
lTest = new Label"provaaaaaaaaannnnt" );
        
addlTest );
        
lTest.reshape(10010020024);
        
lTest.setForegroundColor.yellow );
        
        
lIdioma = new Label"Idioma" );
        
addlIdioma );
        
lIdioma.reshape(20205024);
        
        
cIdioma = new Choice();
        
cIdioma.addItem"Castellano" );
        
cIdioma.addItem"Català" );
        
addcIdioma );
        
cIdioma.reshape(1002012024);
            
        
lFont = new Label"Font" );
        
addlFont );
        
lFont.reshape(20505024);
        
        
cFont = new Choice(); 
        
GraphicsEnvironment gEnv GraphicsEnvironment.getLocalGraphicsEnvironment();
        
String envfonts[] = gEnv.getAvailableFontFamilyNames();
        
Vector vector = new Vector();
        for ( 
int i 1envfonts.lengthi++ ) {
            
vector.addElement(envfonts[i]);
            
cFont.addItem(envfonts[i]);
        }        
        
addcFont );
        
cFont.reshape(1005018024);
        
        
cMida = new Choice();
        
cMida.addItem"10" );
        
cMida.addItem"12" );
        
cMida.addItem"14" );
        
cMida.addItem"16" );
        
cMida.addItem"18" );
        
addcMida );
        
cMida.reshape(290505024);

        
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" );
        
addcColor );
        
cColor.reshape3505010024 );
    
        
fFont = new Font("Alibi"Font.PLAIN10);
        
color Color.yellow;
        
sText "Texto de prueba...";
    }
    
    public 
void paintGraphics g 
    { 
      
g.setFontfFont );
      
g.setColorcolor );
      
g.drawStringsText100140 );
    } 
    
    public 
boolean handleEventEvent evt ) {
        if( 
evt.target == cIdioma && evt.id == 1001 ) {
            
lTest.setTextcIdioma.getSelectedItem() );
            
            if ( 
cIdioma.getSelectedIndex() == )
                
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 IntegercMida.getSelectedItem() );

            
lTest.setFont( new Font(cFont.getSelectedItem(), Font.PLAINiMida) );
            
            
fFont = new Font(cFont.getSelectedItem(), Font.PLAINiMida);
            
repaint();
        }
        else if( 
evt.target == cColor && evt.id == 1001 ) {
            switch( 
cColor.getSelectedIndex() ) {
            case 
0color Color.yellow; break;
            case 
1color Color.blue; break;
            case 
2color Color.cyan; break;
            case 
3color Color.white; break;
            case 
4color Color.gray; break;
            case 
5color Color.darkGray; break;
            case 
6color Color.magenta; break;
            case 
7color Color.orange; break;
            case 
8color Color.black; break;
            case 
9color Color.red; break;
            case 
10color Color.pink; break;
            case 
11color Color.green; break;
            case 
12color Color.lightGray; break;
            }
            
repaint();
            
            
lTest.setForegroundcolor );
        }
        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, ...
  #2 (permalink)  
Antiguo 13/11/2006, 01:47
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Para esto ultimo que dices, parece ser que lo que tendrías que hacer sería implementar tu propio ListCellRenderer:
http://java.sun.com/docs/books/tutor....html#renderer
  #3 (permalink)  
Antiguo 18/11/2006, 12:59
Avatar de dakar  
Fecha de Ingreso: octubre-2005
Mensajes: 10
Antigüedad: 18 años, 6 meses
Puntos: 0
Muchas gracias GreenEyed!!!

Perfecto con ListCellRenderer...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:48.