TextArea dodawanie linii

2011-05-05 18:16

Rejestracja: 15 lat temu

Ostatnio: 8 lat temu

0

Utworzyłem okienko w którym mam jTextArea. Klasa nazywa się env. Stworzyłem drugą klasę, która otrzymuje komunikaty od innych aplikacji (działa) i chciałbym żeby w momencie nadejścia komunikatu jego treść była dopisywana do jTextArea w klasie env. Jak najprościej to zrobić?

edytowany 1x, ostatnio: madmike, 2011-05-05 20:30
chodzi ci o metode która dopisuje coś na końcu ? - szypxx 2011-05-05 19:30
najprosciej append :) - szypxx 2011-05-05 19:31

Pozostało 580 znaków

Woodoo
2011-05-05 19:02
Woodoo
0

Ja się tam na Javie nie znam, ale jakieś iweny chyba musisz mieć, albo action listenery:) coś koło tego, tak bym to widział

Pozostało 580 znaków

2011-05-05 19:29

Rejestracja: 10 lat temu

Ostatnio: 3 lata temu

0

jeżeli jest to możliwe to możesz stworzyć String'a statycznego do którego będziesz wpisywał te worzyć dane. Możesz sttakże metodę statyczną która będzie zapisywała dane do tego stringa. Dzięki słowu static możesz użyć metody z tej klasy(albo naszego pola statycznego) nie tworząc obiektu tej klasy.

czyli np. mając :

class Str {
        static String a = "imię";
        static String make(){
            return a+ " nazwisko";
        }
}

w innej klasie możesz zrobić Str.make() i wszystko będzie ok :)

Pozdr. :)

Pozostało 580 znaków

2011-05-05 19:40

Rejestracja: 15 lat temu

Ostatnio: 8 lat temu

0

fragment mojego kodu:

 class AlarmHandler implements Runnable {
private Socket socket;

public AlarmHandler(Socket socket) {
this.socket = socket;

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

public void run() { 
try
{
//
// Read a message sent by client application
//
ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
String message = null;
            try {
                message = (String) ois.readObject().toString();
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(ConnectionHandler.class.getName()).log(Level.SEVERE, null, ex);
            }
 System.out.println(message);

ois.close();

socket.close();

} catch (IOException e) {
e.printStackTrace();
} 
}
}

W klasie env mam jTextArea do którego chce dopisać zawartość zmiennej message

edytowany 1x, ostatnio: darioze, 2011-05-05 19:40

Pozostało 580 znaków

bo
2011-05-05 21:00
bo
0

Do konstruktora

public AlarmHandler(Socket socket,env ref)

przekaż również referencję do obiektu klasy env. Potem wywołuj ref.jTextArea.append("\n"++message); (lub ref.getJTextArea().append("\n"++message); jeżeli pole jTextArea jest private).

Pozostało 580 znaków

2011-05-05 22:02

Rejestracja: 15 lat temu

Ostatnio: 8 lat temu

0

Następny kawałek kodu - trochę to zagmatwane:

 public class AlarmListener extends Thread{
private ServerSocket server;
private int port = 8080;

public void run() {
try {
server = new ServerSocket(port);
handleConnection();
} catch (IOException e) {
}
} 

public void handleConnection() { 
while (true) {
try {
Socket socket = server.accept();

new AlarmHandler(socket);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

Natomiast w main:

        Env en = new Env();
        en.show();

        Listener ls = new Listener();
        ls.start();

        AlarmListener al = new AlarmListener();
        al.start(); 
przecież bo napisał co masz zrobić :) - remigio 2011-05-05 22:06
nie zadziałało - darioze 2011-05-05 23:09

Pozostało 580 znaków

bo
2011-05-06 06:26
bo
0

Nie widzę byś w konstruktorze klasy AlarmHandler przekazywał referencję do klasy Env. Nie możesz pisać, że nie zadziałało, bo nie sprawdziłeś.

new AlarmHandler(socket);
} catch (IOException e) {
e.printStackTrace();
}

Schemat winien być taki:

//w main:
        Env en = new Env();
        en.show();

        Listener ls = new Listener();
        ls.start();

        AlarmListener al = new AlarmListener(en);
        al.start();
//w klasie AlarmListener
public class AlarmListener extends Thread{
    private ServerSocket server;
    private int port = 8080;
    private Env env;
    public AlarmListener(Env env)
    {
        super();
        this.env=env;
    }
    public void run() {
    try {
    server = new ServerSocket(port);
    handleConnection();
    } catch (IOException e) {
    }
    }

    public void handleConnection() {
    while (true) {
    try {
    Socket socket = server.accept();

    new AlarmHandler(socket,env);
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }
    }

Pozostało 580 znaków

2011-05-06 17:36

Rejestracja: 15 lat temu

Ostatnio: 8 lat temu

0

Dzięki wielkie, skorzystałem z twojego schematu i zadziałało. Wybacz ale nie pomyślałem żeby umieścić ten kod który mi nie zadziałał - umieściłem czysty, bez referencji. Jeszcze raz wielkie dzięki :)

Pozostało 580 znaków

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0