Foro de elhacker.net

Programación => Java => Mensaje iniciado por: josco en 25 Julio 2010, 01:18 am



Título: mostrar un string en un espacio pequeno
Publicado por: josco en 25 Julio 2010, 01:18 am
hola que tal aver si alguien me puede ayudar.

quiero mostrar un string que se valla recorriendo como si se lo comiera la pantalla, algo asi como los reproductores de celulares o cosas asi donde el nombre de la cancion no cabe en la pantalla entonces lo que hacen es ir comiendoce el principio del nombre y mostrando lo que viene.


Título: Re: mostrar un string en un espacio pequeno
Publicado por: Aeros en 25 Julio 2010, 02:24 am
hacer un vector de ese array y un vector mas chico que vas agregando el vector del string letra por letra hasta q se llene y cuando se llena se van cortando?

saludos


Título: Re: mostrar un string en un espacio pequeno
Publicado por: danielo- en 25 Julio 2010, 02:25 am
Xq no pones el code que tienes hasta ahora?
O almenos di si es sobre un frame y que metosdo usas para mostrarlo en pantalla, es decir, yo te recomendaría un drawString, meterlo en un ciclo e ir cambiando los parametros, sencillo, pero no especificas como lo estas trabajando :O

Saludos.


Título: Re: mostrar un string en un espacio pequeno
Publicado por: josco en 25 Julio 2010, 19:20 pm
bueno estoy haciendo un reproductor, entonces el metodo que uso para dibujar el reproductor es este:
Código:
public void paintAudio(Graphics g){
//int indice = 0;

// Si no se ha podido cargar el audio, mostramos el error
if (error!=null && !error.equals("")){
                    g.setColor(0, 0, 0); // negro
                    g.setFont(Font.getFont(Font.FACE_PROPORTIONAL, Font.STYLE_PLAIN, Font.SIZE_SMALL));
    g.drawString("Se ha producido un error: ", getWidth()/2, getHeight()/2, Graphics.TOP | Graphics.HCENTER);
    g.drawString(error, 0, (int) (getHeight() * .60), 0);
                    this.removeCommand(salir);
                    this.addCommand(atras);
                    playingAudio = false;
    return;
}
                    g.setColor(0, 92, 255);
                    g.fillRect(0, PlayPause.getY()-5, getWidth(), getHeight()-PlayPause.getY());
                    g.fillRect(0, 0,getWidth(), (int) (getHeight() * .2)+Font.SIZE_SMALL+5);
                    PlayPause.paint(g);
                    Atras.paint(g);
                    Adelante.paint(g);
                    long tiempo = 0;
              try {
            tiempo = playerThread.player.getMediaTime() / 1000000L /*Constantes.SECS_TO_MICROSECS*/;
             } catch (Exception e) {
        //e.printStackTrace();
            }
                    ///
                    // Barra de progreso
                    int tamano = (((int) (getWidth()-((getWidth()*.2)*2))-1));
                    long longitud = 0;
                    if (duracion!=0){
longitud = tiempo * (tamano) / duracion;
     }
                    g.setColor(0,112,0);//g.setColor(255,255,0);//amarillo
    g.drawRect ((int) (getWidth() * .2), (int) (getHeight() * .2), (int) (getWidth()-((getWidth()*.2)*2)),8 );
                    g.setColor(255,255,0);//amarillo//g.setColor(0,112,0);//verde
      g.fillRect ((int) (getWidth() * .2)+1,(int) (getHeight() * .2)+1 ,(int) longitud , 7);
                    //fin barra progreso
                    g.setColor(0, 0, 0); // negro
                    g.setFont(Font.getFont(Font.FACE_PROPORTIONAL, Font.STYLE_PLAIN, Font.SIZE_SMALL));
    g.drawString(ficheroActual, (int) (getWidth() * .5), (int) (getHeight() * .1), Graphics.TOP | Graphics.HCENTER);
                    g.drawString(long2time(tiempo), (int) (getWidth() *.1), (int) (getHeight() *.2)-Font.SIZE_SMALL/2, Graphics.TOP | Graphics.HCENTER);
                    g.drawString(long2time(duracion), (int) (getWidth()*.8)+5, (int) (getHeight() * .2)-Font.SIZE_SMALL/2, 0);
                    this.removeCommand(salir);
                    this.addCommand(atras);

         }

en la parte
Código:
  g.drawString(ficheroActual, (int) (getWidth() * .5), (int) (getHeight() * .1), Graphics.TOP | Graphics.HCENTER);

es donde muestro el nombre de la cancion, este metodo esta dentro de un metodo run que tiene un while:

Código:
public void run() {
        Graphics g = getGraphics();
       
        while (!stopped)
        {
           controles();
   paintAudio(g)   
   try {
          Thread.sleep(10);
       } catch (Exception e) {
      }
}

    }


Título: Re: mostrar un string en un espacio pequeno
Publicado por: sapito169 en 26 Julio 2010, 00:03 am
tienes que usar trhreads
lo unico que tienes que hacer es dentro del thread  ponerle parte del texto a un jlabel hacer una pausa de medio segundo