[ igracc @ 22.06.2007. 11:44 ] @
Pozdrav
Treba da uradim sledeci aplet:pomera tekst od dole na gore,sadrzaj teksta treba da se menja iz desne u levu stranu.
Ja sam napisao za pomeranje iz desne u levu stranu ,samo ne znam da napisem za pomeranje od dole ka gore
Evo koda:

Code:

import java.awt.*;
import java.applet.*;
/*
 <applet code="JednostavanNatpis" width=300 height=50>
 </applet>
 */

public class JednostavanNatpis extends Applet implements Runnable {
    String poruka="Ovo je tekst koji se pomera iz desne u levu stranu. ";
    Thread t=null;
    int stanje;
    boolean oznakaZaKraj;

    public void init(){
     setBackground(Color.cyan);
     setForeground(Color.red);
    }
    
    public void start(){
        t=new Thread(this);
        oznakaZaKraj=false;
        t.start();
    }
    
    public void run(){
        char ch;
        
        for( ; ; ){
            try{
                repaint();
                Thread.sleep(250);
                ch=poruka.charAt(0);
                poruka=poruka.substring(1,poruka.length());
                poruka+=ch;
                if(oznakaZaKraj)
                    break;
            }catch (InterruptedException e){}
        }
    }
    
   public void stop(){
       oznakaZaKraj=true;
       t=null;
   }
   
   public void paint(Graphics g){
       g.drawString(poruka,50,80);
       showStatus("Aplet pomera tekst od dole ka gore,i iz desne u levu stranu.");
   }
}


[Ovu poruku je menjao hyle dana 22.06.2007. u 14:40 GMT+1]
[ bgd2500 @ 22.06.2007. 21:46 ] @
Nemoj da pises uvek na istu poziciju (50, 80), vec menjaj vrednosti po y osi.
[ Haker_od_Macve @ 22.06.2007. 22:11 ] @
Hajde dopuni primer ako znas!
Citat:
bgd2500: Nemoj da pises uvek na istu poziciju (50, 80), vec menjaj vrednosti po y osi.
[ bgd2500 @ 23.06.2007. 01:48 ] @
Na primer ovako;
Code:

import java.awt.*;
import java.applet.*;
/*
 <applet code="JednostavanNatpis" width=300 height=50>
 </applet>
 */

public class JednostavanNatpis extends Applet implements Runnable {
    String poruka="Ovo je tekst koji se pomera od dole ka gore i iz desne u levu stranu. ";
    Thread t=null;
    int stanje;
    int y;
    boolean oznakaZaKraj;

    public void init(){
        setBackground(Color.cyan);
        setForeground(Color.red);
    }
    
    public void start(){
        t=new Thread(this);
        oznakaZaKraj=false;
        y = getHeight();
        t.start();
    }
    
    public void run(){
        char ch;
        
        for( ; ; ){
            try{
                repaint();
                Thread.sleep(250);
                ch=poruka.charAt(0);
                poruka=poruka.substring(1,poruka.length());
                poruka+=ch;
                if (y == 0) {
                    y = getHeight();
                } else {
                    y--;
                }
                if(oznakaZaKraj)
                    break;
            }catch (InterruptedException e){}
        }
    }
    
    public void stop(){
        oznakaZaKraj=true;
        t=null;
    }
   
    public void paint(Graphics g){
        g.drawString(poruka,50,y);
        showStatus("Aplet pomera tekst od dole ka gore,i iz desne u levu stranu.");
    }
}
[ igracc @ 23.06.2007. 20:52 ] @
Pozdrav
Ok,hvala ti ! ! !
[ bgd2500 @ 23.06.2007. 22:14 ] @
Poenta nije u tome da ti neko drugi pise kod nego da ti to sam uradis.
[ Haker_od_Macve @ 23.06.2007. 23:16 ] @
Kako da promenim smer kretanja teksta.Ne mogu da shvatim gde je taj deo koda koji to definise! Kada tekst dodje do vrha on treba da se vrati dole.I sve tako u krug.Kakav uslov da postavim?Nemam nikakvu literaturu pa se ne snalazim bas najbolje!Samo imam zapise sa casova koji su bas minimalni,a za ovaj zadatak mi ne mogu pomoci!
[ bgd2500 @ 24.06.2007. 23:18 ] @
Definisi promenljivu za smer kretanja na primer;

boolean nadole = false;

i izmeni deo za racunanje y koordinate teksta da zavisi od smera kretanja.
Umesto
Code:

...
if (y == 0) {
    y = getHeight();
} else {
    y--;
}
...

stavi nesto ovako
Code:

...
if (nadole) {
    y++;
    if (y == getHeight()) {
        nadole = false;
    }
} else {
    y--;
    if (y == 0) {
        nadole = true;
    }
}
...

I potrudi se da ukapiras sta radi kod, inace dzaba posao.
[ Haker_od_Macve @ 24.06.2007. 23:42 ] @
Ubacio sam ovaj deo koda:

if (nadole) {
y--;
if (y == getHeight()) {
nadole = false;
}
} else {
y++;
if (y == 0) {
nadole = true;
}
}
**********************************************
Kada promenim y-- i y++ dobijem ono sto mi treba, da ide od gore pa na dole, ali ne pocinje sa vrha prozora vec sa neke pozicije pri sredini.Kako to da podesim? I ne znam kako da promenim pravac kretanja poruke(levo-desno).Sto se tice razumevanja koda, sve sto napises ja cu shvatiti!
[ bgd2500 @ 25.06.2007. 15:19 ] @
Ako hoces da ti ide od gore na dole i da krene od vrha, dodaj u start() metod

y = 0;
nadole = true;

Za levo-desno bi (analogno pomeranju gore-dole) trebalo da azuriras x koordinatu na kojoj se ispisuje text, a ne ovako kako sada radi.
Cenim da ces uspeti sam da se izboris sa tim ;)
[ Haker_od_Macve @ 25.06.2007. 18:53 ] @
Nisi me razumeo za kretanje teksta levo-desno. Necu da mi string ide levo-desno vec njegov tekst!
[ bgd2500 @ 26.06.2007. 10:59 ] @
Napravio si da ti tekst ide u levo, zar ne. Ajde probaj da prepravis te 3 linije koda da tekst umesto u levo ide u desno (pogledaj u dokumentaciji sta radi substring). Kad to savladas, uvedi jos jednu promenljivu koja ce da ti kaze kako se trenutno pomera tekst, tipa

boolean nalevo = true;

Code:

public void run() {
    ...
    if (nalevo) {
        // pomeranje tekst u levo
        ch=poruka.charAt(0);
        poruka=poruka.substring(1,poruka.length());
        poruka+=ch;
    } else {
        // pomeranje teksta u desno (treba da napises sam)

    }
    ...
}

Kasnije sa

nalevo = true/false;

menjas smer kretanja teksta.
[ Haker_od_Macve @ 26.06.2007. 18:45 ] @
Evooooooooo resenjaaaaaaaaaaaaaa!!!

Code:

import java.awt.*;
import java.applet.*;
/*
<applet code="JednostavanNatpis" width=300 height=50>
</applet>
*/

public class KretanjeTeksta extends Applet implements Runnable {
String poruka="Ovo je tekst koji se pomera iz leve u desnu stranu.";
Thread t=null;
int y;
char nagore,nadole='0';
boolean oznakaZaKraj;
//***********************************************************************
public void init(){
setBackground(Color.yellow);
setForeground(Color.black);
}
//************************************************************************
public void start(){
t=new Thread(this);
oznakaZaKraj=false;
//tekst krece od 0
y=0;
t.start();

}
//*************************************************************************
public void run(){
char ch;
int w;

for( ; ; ){
try{

if(nadole=='0')
{
//kada je y==getHeight tekst ostaje na dnu
if(y==getHeight())
{

nadole='1';
nagore='1';
poruka="Ovo je tekst koji se pomera iz desne u levu stranu .";
}else{
repaint();
Thread.sleep(150);
w=poruka.length();
ch=poruka.charAt(w-1);
poruka=poruka.substring(0,w-1);
poruka=ch+poruka;

y++;
}
}

if(nagore=='1')
{

repaint();
Thread.sleep(150);
w=poruka.length();
ch=poruka.charAt(0);
poruka=poruka.substring(1,w);
poruka+=ch;

y--;
}


if(oznakaZaKraj)
break;
}catch (InterruptedException e){}
}
}
//*****************************************************************************
public void stop(){
oznakaZaKraj=true;
t=null;

}
//*****************************************************************************
public void paint(Graphics g){
g.drawString(poruka,100,y);
if(nadole=='0'){
showStatus("Aplet pomera tekst od gore ka dole i iz leve u desnu stranu.");
}
if(nadole=='1') {
showStatus("Aplet pomera tekst od dole ka gore i iz desne u levu stranu.");
}
}
}
//*******************************************************************************


[Ovu poruku je menjao Haker_od_Macve dana 27.06.2007. u 21:09 GMT+1]

[Ovu poruku je menjao Haker_od_Macve dana 27.06.2007. u 21:12 GMT+1]