Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Апплеты > Динамическая передача данных в апплет


Автор: vendigo11 18.10.2009, 11:59
Такая проблема...
Данные с сервера передаются Java-апплету. 

Код



import java.awt.*; 
import java.applet.*;

public class HelloWorld extends Applet
{ 
int ax,ay,bx,by,cx,cy;
public void init ()
{
ax = Integer.parseInt(getParameter ("ax"));
ay = Integer.parseInt(getParameter("ay"));    
bx = Integer.parseInt(getParameter ("bx"));
by = Integer.parseInt(getParameter("by"));    
cx = Integer.parseInt(getParameter ("cx"));
cy = Integer.parseInt(getParameter("cy")); 
}

public void paint(Graphics g)
{
//g.clearRect(0, 0, 400,400);


g.setColor(Color.BLUE);    

g.drawLine(ax,ay,bx,by); 
g.drawLine(cx,cy,bx,by); 
g.drawLine(ax,ay,cx,cy); 
}    


Метод init вызывается только при создании апплета. paint при повреждении апплета.
Как сделать чтобы данные в апплет передавались динамически и изображение динамически перерисовывалось, без пересоздания апплета. (Т.е один раз создал апплет,а потом лишь передавать ему параметры)? 

Автор: COVD 18.10.2009, 19:39
Это способ передачи не данных, а параметров инициализации. Инициализация приложения (апплета) происходит один раз. 

После инициализации клиентское приложение (апплет) для общения с сервером может установить или постоянное сокетное соединение с сервером (протокол tcp или др. , http://java.sun.com/docs/books/tutorial/networking/sockets/index.html , http://java.sun.com/developer/onlineTraining/Programming/BasicJava2/socket.html) или воспользоваться схемой "запрос-ответ", которая органично реализуется в протоколе http ( http://java.sun.com/docs/books/tutorial/networking/urls/index.html). 

Предпочтительнее применение http , т.к. это снимает ограничения, связанные с файерволами, т.е. позволяет приложению соединяться с сервером отовсюду, где есть интернет, ибо http на 80-й порт - стандарт для интернет.   

Автор: Aver91 16.1.2010, 21:00
верно было подмечено, что нужно установить сокетное соединение с сервером, создать inputstream объект. а дальше организовать проверку на принятый параметр(можно даже в отдельном потоке) и если он отличается, то вызвать метод repaint(), который в свою очередь вызовет метод paint() с новыми параметрами. итого получим динамическую перерисовку. после работы приложения в методе destroy() апплета закрываем входной поток и сокет методом close()

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)