JApplet не показывает JPanel с изображением - PullRequest
0 голосов
/ 13 декабря 2011

Здравствуйте! Я использую JApplet для отображения Jpanel с изображением, которое я получаю из сети, но апплет загружается и не показывает изображение.

Код:

пакет com.ntenisot;

import java.io.*;
import java.net.*;
import javax.swing.*;

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

public class Cliente extends JApplet {

JTextField tf;
Lienzo lienzo;
Socket con;
ObjectOutputStream salida;
ObjectInputStream entrada;

public void init(){
    System.out.println("initializing");
    tf = new JTextField(10);
    lienzo=new Lienzo();    
    setSize(1000,1000);
    lienzo.setSize(900,900);
    lienzo.setVisible(true);
    setContentPane(lienzo);

    Container container = getContentPane();
    container.setBackground(Color.pink);
    container.setLayout(new FlowLayout());

    // Text area 1
    String string = "Some text in here, Some text in here, Some text in here";
    JTextArea textArea1 = new JTextArea(string, 10, 15);
    container.add(new JScrollPane(textArea1));
}

public void start() {
    ejecutar();
}

void ejecutar(){
    System.out.println("executing1");

    try{

        con = new Socket("127.0.0.1",5700);
        salida = new ObjectOutputStream(con.getOutputStream());
        salida.flush();
        entrada = new ObjectInputStream(con.getInputStream());
        System.out.println("executing");
        procesar();


    }
    catch(IOException e){
        System.out.println("error");
    }

}   

void procesar() throws IOException {
    System.out.println("processing");

    try{

        while(true){
            ImageIcon img = (ImageIcon) entrada.readObject();
            escribir(img);
        }
    }catch(ClassNotFoundException e){}

}

void escribir(final ImageIcon img){

    SwingUtilities.invokeLater(
            new Runnable(){
                public void run(){
                    lienzo.pinta(img);
                }

            }
            );

}

class Lienzo extends JPanel{

    ImageIcon img=null ;

    public void pinta(ImageIcon img){
        this.img=img;
        repaint();
    }

    public void paintComponent(Graphics g){

        super.paintComponent(g);

        if(img!=null)   
            img.paintIcon(this,g,10,10);

    }


}   

}

1 Ответ

1 голос
/ 13 декабря 2011

Я не тестировал ваш код, но кажется, что метод processar не может завершиться.Следовательно, метод init также не завершается.Я думаю, что вы можете удалить окружающий цикл while (true), поскольку достаточно установить изображение один раз.

...