style funcion evento ejemplo java onclick

java - funcion - onclick jquery html



Oyentes Java onclick (1)

Por supuesto, tanto el cliente como el servidor usan flujos almacenados en búfer. Esta es la naturaleza de las conexiones de socket. No envía byte de información por byte. Envía buffers. Su lógica opera con líneas, espera caracteres de fin de línea. Podría estar en el medio del buffer así que su programa esperará hasta que el buffer esté lleno y podría haber muchas líneas.

Para eliminar esta parte de envío de espera (tanto en el servidor como en el cliente) se debe usar el método de descarga para enviar datos de manera inmediata.

En particular, agregue una línea de código en el lado del cliente

while (!closed) { os.println(s.trim()); os.flush(); // <- send immediately right now }

y similar en el lado del servidor si envía algo desde el lado del servidor.

Tengo un programa simple que permite que 2 clientes se conecten a un servidor.

Una vez conectados, pueden turnarse para hacer clic en la imagen de la tarjeta en blanco.

Una vez que cualquiera de los 2 clientes haga clic en la imagen de la tarjeta en blanco, la imagen de la tarjeta cambiará a la imagen del Club de As.

Los cambios se mostrarán en ambos lados del cliente y el clic se desactivará para ambos clientes.

Después de 2 segundos, vuelve a la imagen de la tarjeta en blanco y el cliente puede hacer clic de nuevo.

Problema

Puedo mostrar la imagen de Club of Ace en ambos lados después de que un cliente ha hecho clic, pero cuando la imagen vuelve a la imagen de la tarjeta en blanco después de 2 segundos, ya no puedo hacer clic en ella.

Esto es lo que he intentado en mi método run () (Actualizado)

public void run() { while(true) { try { while (true) { response = is.readLine(); if(!response.equals("")) { System.out.println(response); responded = true; } break; } } catch (IOException e) { System.err.println("IOException: " + e); } if(responded) { timer = new Timer(1000,new TimerC()); timer.start(); responded = false; } } }

Aquí está mi código completo para mi cliente. Por favor ayuda

import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.io.DataInputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.PrintStream; import java.net.Socket; import java.net.UnknownHostException; import javax.swing.ImageIcon; import javax.swing.Timer; public class Client implements Runnable { static Socket clientSocket = null; ObjectInputStream in = null; String serverMsg; static PrintStream os = null; static DataInputStream is = null; static boolean closed = false; static String s = ""; static String cardType = ""; static GameUI gameUI; int countdown = 3; Timer timer = new Timer(1000,null); String response = null; boolean responded = false; public static void main(String args[]) { try { clientSocket = new Socket("localhost", 5550); os = new PrintStream(clientSocket.getOutputStream()); is = new DataInputStream(clientSocket.getInputStream()); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } gameUI = new GameUI(); gameUI.cardOne.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { s = gameUI.cardOne.getText(); } }); if (clientSocket != null && os != null && is != null) { try { new Thread(new Client()).start(); while (!closed) { os.println(s.trim()); } os.close(); is.close(); clientSocket.close(); } catch (IOException e) { System.err.println("IOException: " + e); } } } public void run() { try { while (true && !responded) { response = is.readLine(); if(!response.equals("")) { System.out.println(response); responded = true; break; } } } catch (IOException e) { System.err.println("IOException: " + e); } if(responded) { timer = new Timer(1000,new TimerC()); timer.start(); responded = false; } } class TimerC implements ActionListener { @Override public void actionPerformed(ActionEvent event) { if(countdown == 0) { timer.stop(); gameUI.cardOne.setIcon(new ImageIcon(GameUI.revealCard("blank.png"))); countdown = 3; } else { gameUI.cardOne.setIcon(new ImageIcon(GameUI.revealCard(response))); countdown--; System.out.println(countdown); } } } }