[ beautifulsmile @ 29.07.2009. 16:44 ] @

Ovo treba da bude neki Java applet koji pokazuje kako to funkcionise visenitno programiranje u Javi..Medjutim metoda repaint() me ubi u pojam... Ovo je taj kod medjutim u ovoj zadnjoj metodi repain() kad stavim odredjene argumente kako bi tekst apleta ne bi se prikazivao prije nego sto je pritisnuto dugme program potpuno poludi, a ako stavim bez argumenata tekst se pojavi cim pokrenem program i ne ulazi u metodu run() kako sam ja hjtela...Sta da uradim kako bih tekst polja stavila u jednu nit a da pritiskom na button stalno pici tekst u okviru druge niti...Hvala unaprijed!


import java.applet.Applet;
import java.awt.Button;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Label;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class PrimjerZaTextPoljeIAplet extends Applet implements ActionListener,
Runnable {

/*
<applet code="PrimjerZatextPoljeIAplet" width=300 height=50>
</applet>
*/


String poruka1="Moj prvi aplet";
TextField ime, prezime;
String porukabutton="";
Button pritisni;
Thread t=null;
Thread t5=null;
int stanje;
boolean oznakaZaKraj;
Font f = new Font("SansSerif", Font.BOLD, 50);

public void init() {
setBackground(Color.white);
setForeground(Color.black);
pritisni=new Button("pritisni");
Label imep=new Label ("Ime: ",Label.RIGHT);
Label prezimep=new Label("Prezime: ",Label.RIGHT);
ime=new TextField(10);
prezime=new TextField(20);

add(pritisni);
add(imep);
add(ime);
add(prezimep);
add(prezime);

pritisni.addActionListener(this);
ime.addActionListener(this);
prezime.addActionListener(this);


}
public void start() {
t= new Thread();
oznakaZaKraj=false;
t.start();
t.run();

}


public void run() {
char ch;
for (; ;) {
try {
repaint(200,200,poruka1.length(),15);
Thread.sleep(250);
ch=poruka1.charAt(0);
poruka1=poruka1.substring(1,poruka1.length());
poruka1+=ch;
if(oznakaZaKraj)
break;
}
catch (InterruptedException e) {}
}
}

public void stop() {
oznakaZaKraj=true;
t=null;
}

public void paint(Graphics g) {

g.drawString("Ime: "+ ime.getText(),6,60);
g.drawString("Oznaceni tekst u imenu: "+ime.getSelectedText(), 6,80);
g.drawString("Prezime: "+ prezime.getText(), 6,100);
g.setFont(f);
g.setColor(Color.red);
g.drawString(poruka1, 200, 200);
}

public void actionPerformed(ActionEvent e) {
String str=e.getActionCommand();
if (str.equals("pritisni")){
t5.start();
}
repaint();

}

}
[ Ivan Ivanic @ 29.07.2009. 17:25 ] @
Dobrodošla :-)
Koristi oznake za kod.

Problem ti je što samo napraviš thread koji ništa ne radi i pokerneš ga:
Code:

public void start() {
t= new Thread();
oznakaZaKraj=false;
t.start();
t.run();

}



Uradi ovako:
Code:

...
t= new Thread(this);
...


Time mu prosleđuješ svoj Runnable koji ima implementiran run() metod koji ustvari definiše šta će tvoj thread raditi...
[ beautifulsmile @ 29.07.2009. 20:48 ] @
Hvala puno! Imam jos jedno pitanje...Sad mi se tekst pojavljuje cim pokrenem program i pomjera se svakim pritiskom tastera enter a ja bih htjela da se tekst pojavi tek pritiskom na button koji sam ja kreirala i da se krece (ono kao na reklami) bez dodatnih pritiskanja tastera... Unaprijed zahvaljujem!
[ beautifulsmile @ 03.08.2009. 02:51 ] @
Ljudi, molim Vas pomagajte ovo mi treba hitno!
[ Ivan Ivanic @ 03.08.2009. 07:42 ] @
Evo ti pročitaj ovde šta radi start metod appleta http://java.sun.com/docs/books...ment/applet/appletMethods.html
Ti u start metodu bezuslovno pozivaš start thread-a tako da ti uvek krene "animacija" čim se applet učita. To prebaci u actionPerformed i to ti je to...
[ beautifulsmile @ 04.08.2009. 13:33 ] @
Code:


public class PrimjerZaTextPoljeIAplet extends Applet implements ActionListener,
        Runnable {

    
    String poruka1="Moj prvi aplet";
    TextField ime, prezime;
    String porukabutton="";
    Button pritisni;
    Thread t=null;
    int stanje;
    boolean oznakaZaKraj;
    Font f = new Font("SansSerif", Font.BOLD, 50);
    
     public void init() {
         setBackground(Color.white);
         setForeground(Color.black);
         pritisni=new Button("pritisni");
         Label imep=new Label ("Ime: ",Label.RIGHT);
         Label prezimep=new Label("Prezime: ",Label.RIGHT);
         ime=new TextField(10);
         prezime=new TextField(20);
         
         add(pritisni);
         add(imep);
         add(ime);
         add(prezimep);
         add(prezime);
         
         pritisni.addActionListener(this);
         ime.addActionListener(this);
         prezime.addActionListener(this);
         
         
     }
     public void start() {
         t= new Thread(this);
         oznakaZaKraj=false;
     }
    
    
     public void run() {
            char ch;
            for (; ;) {
                try {
                repaint(200,200,poruka1.length(),15);
                Thread.sleep(250);
                ch=poruka1.charAt(0);
                poruka1=poruka1.substring(1,poruka1.length());
                poruka1+=ch;
                if(oznakaZaKraj)
                    break;
                }
                catch (InterruptedException e) {}
        }
        }
        
            public void stop() {
                oznakaZaKraj=true;
                t=null;
            }
            
    public void paint(Graphics g) {
    
        g.drawString("Ime: "+ ime.getText(),6,60);
        g.drawString("Oznaceni tekst u imenu: "+ime.getSelectedText(), 6,80);
        g.drawString("Prezime: "+ prezime.getText(), 6,100);
        g.setFont(f);
        g.setColor(Color.red);
        g.drawString(poruka1, 200, 200);
    }
    
    public void actionPerformed(ActionEvent e) {
        String str=e.getActionCommand();
        if (str.equals("pritisni")){
            t.start();
        }    
        repaint();
        
    }
        
    }


Zaboravila sam da napisem da sam prebacila da izvrsavanje niti pocne tek u metodi ActionPerformed ali da tekst apleta jos uvijek dobijam pri pokretanju programa...Odnosno tekst mi se ispisuje iz metode paint pa ga zbog toga imam odmah na startu..Medjutim ja kada stavim neke argumente u metodi repaint() koja je na kraju kako bi mi se update-ova samo jedan dio prozora program potpuno poludi...
[ Ivan Ivanic @ 04.08.2009. 15:24 ] @
pročitaj malo o swingu i threadovima dok to ne razumeš nikad ti gui neće dobro raditi...
pročitaj ovo mada su matori članci još uvek su bolno tačni :-)
http://java.sun.com/products/j...articles/threads/threads1.html
http://java.sun.com/products/j...articles/threads/threads2.html
[ beautifulsmile @ 23.08.2009. 17:08 ] @
Hvala puno!
[ Ivan Ivanic @ 23.08.2009. 20:57 ] @
You are welcome :-)