Estou fazendo um programa eu quero atualizar minha tela a medida que um dado vai sendo enviado , mas ele so o faz uma vez na primeira, ja fiz inumeros testes dentro do bloco switch ele entra mas nao faz direito , se puderem dar uma olhada no codigo agradeco
ps : esqueci de dizer, o que eu quero é que o JFrame fique lá mas que nao precise abrir outro para mostrar , pq so estou conseguindo fazer abrindo outro JFrame
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.*;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
public class Servidor extends JFrame {
static Canvas1 c1 = new Canvas1();
static Canvas2 c2 = new Canvas2();
static Canvas3 c3 = new Canvas3();
static Canvas4 c4 = new Canvas4();
static Canvas5 c5 = new Canvas5();
JButton close = new JButton("Fechar Janela");
static DataInputStream rfile;
static int s;
public Servidor() throws UnknownHostException, IOException{
super("Contato via socket");
Socket client = new Socket(InetAddress.getByName("127.0.0.1"),10000);
JOptionPane.showMessageDialog(null,"Conexao Estabelecida via socket");
rfile = new DataInputStream(client.getInputStream());
setLayout(new BorderLayout());
add(close,BorderLayout.SOUTH);
}
public void showC(int z) throws IOException{
switch(z)
{
case 0: add(c1); c1.repaint(); break; // posicao 0
case 1: add(c2); c2. repaint(); break; // posicao A
case 2: add(c3); c3.repaint(); break; // posicao B
case 3: add(c4); c4.repaint(); break; // posicao C
case 4: add(c5); c5.repaint(); break; // posicao D
default: setVisible(false); break;
}
}
public static void main(String args[]) throws IOException{
Servidor k = new Servidor();
k.setSize(500,500);
k.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
while(true)
{
s = rfile.readInt();
k.showC(s);
k.setVisible(true);
System.out.println(s);
if(s==5) break;
}
}
}
classe de uma dessas que extendi de canvas
import java.awt.*;
import javax.swing.*;
public class Canvas1 extends Canvas {
Image i;
public Canvas1()
{
i = Toolkit.getDefaultToolkit().getImage("Basquete1.gif");
}
public void paint(Graphics g)
{
g.drawImage(i, 30, 40, this);
}
}