Brauche Hilfe bei einem Java Applet

anti43

nicht mehr wegzudenken
:)
hallo! aaalso:
ich möchte in diesem applet:


PHP:
import javax.swing.*;
import java.awt.*;
import java.awt.image.*;
import java.applet.Applet;
import java.io.*;
import java.net.*;

public class camAction extends JApplet {
    
// DEKLARIEREN der CONTROLS
    
    JButton jB1 = new JButton();
    JButton jB2 = new JButton();
    JButton jB3 = new JButton();
    JButton jB4 = new JButton();
    JLabel  jL1 = new JLabel();
    
    TextArea jTF1 = new TextArea("Text",8,8,1);
    String str = new String("");
    public Image image;
    public ImageObserver imgO1;
    
    
    public void init() {
        //JFrame f = new JFrame();
        //setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
//    f.applyComponentOrientation( ComponentOrientation.RIGHT_TO_LEFT );
        setLayout( new BorderLayout(5, 5) );
        getRootPane().putClientProperty(
                "defeatSystemEventQueueCheck", Boolean.TRUE);
        
// INIT_CONTROLS
// Eventuelles Layout zurücksetzen
        
        getContentPane().setLayout(null);
        
// Hintergrundfarbe setzen
        
        getContentPane().setBackground(java.awt.Color.lightGray);
        
// Größe Applet
        
        setSize(450,350);
        
// Belegen der CONTROLS mit Werten
// danach hinzufügen.
// Als dritten Schritt legen wir in dem
// Beispiel die exakte Position und Größe
// des Controls fest
       Image image;
        try {
            // Create a URL for the image's location
            URL url = new URL("http://localhost/cam/");
            
            // Get the image
            image = java.awt.Toolkit.getDefaultToolkit().getDefaultToolkit().createImage(url);
        } catch (MalformedURLException e) {image = null;
        }
        
       /* JPanel jp = new JPanel() {
            public void paintComponent(Graphics g) {
                super.setBackground(Color.red);  // ruft JPanel Methode
                super.paintComponent(g);         // ruft JPanel Methode
                int width = getWidth();    // Find out the size of the drawing area.
                int height = getHeight();
                g.setColor(Color.blue);
                g.fillOval(2,2,width-4,height-4);
                g.setColor(Color.yellow);
                g.setFont(new Font("Helvetica", Font.BOLD, 28));
                g.drawString("Hello world!", width/2-30, height/2);
                
                g.drawImage(image, 0, 0, this);  // jpeg Bild zeichnen
                //g.drawImage(image, 339, 0, 339, 240,  this); // .. skaliert
                
            }
        };*/
        
        jB1.setText("Links");
        getContentPane().add(jB1);
        jB1.setBounds(60,220,140,50);
        
        jB2.setText("Rechts");
        getContentPane().add(jB2);
        jB2.setBounds(228,220,140,50);
        
        jB3.setText("Hoch");
        getContentPane().add(jB3);
        jB3.setBounds(60,168,140,50);
        
        jB4.setText("Runter");
        getContentPane().add(jB4);
        jB4.setBounds(228,168,140,50);
        
        getContentPane().add(jTF1);
        jTF1.setBounds(60,24,324,38);
        
        
        jL1.prepareImage(image,230,230,imgO1);
        jL1.draw????
        getContentPane().add(jL1);
        
// REGISTIEREN und EINRICHTEN der LISTENER
// Erster Schritt: Erzeugen eines Objekts der
// Klasse, wo die Auswertung der Events erfolgt.
        
        jRB meineMaus = new jRB();
        
// Registrieren der Listener
// - hier nur Mauslistener
        
        jB1.addMouseListener(meineMaus);
        jB2.addMouseListener(meineMaus);
        jB3.addMouseListener(meineMaus);
        jB4.addMouseListener(meineMaus);
        
        //xportwebcam
        
        
    }
    
// Klasse zum Auswerten der Reaktionen
    
    class jRB extends java.awt.event.MouseAdapter {
        
// Die Methode ruft je nach angeklicktem Control
// die entsprechende Methode zum Behandeln auf.
        
        public void mouseClicked(java.awt.event.MouseEvent event){
            
            Object object = event.getSource();
            
            if (object == jB1)
                jB1_mouseClicked(event);
            
            else if (object == jB2)
                jB2_mouseClicked(event);
            
            else if (object == jB3)
                jB3_mouseClicked(event);
            
            else if (object == jB4)
                jB4_mouseClicked(event);
            
        }
        
    }
    
    void jB1_mouseClicked(java.awt.event.MouseEvent event) {
        str = "Links";
        jTF1.append("\n" +"<user> " +  str);
    }
    
    void jB2_mouseClicked(java.awt.event.MouseEvent event) {
        str = "Rechts";
        jTF1.append("\n" +"<user> " +  str);
    }
    
    void jB3_mouseClicked(java.awt.event.MouseEvent event) {
        str = "Hoch";
        jTF1.append("\n" +"<user> " +  str);
    }
    
    void jB4_mouseClicked(java.awt.event.MouseEvent event) {
        str = "Runter";
        jTF1.append("\n" +"<user> " +  str);
    }
    
}

ein bild voneiner webcam anzeigen, leider bekomm ich das bild nicht da rein...
ich hab schon einiges versucht, hier mit jLabel, aber irgendwie gibts keine drawImage-funktion oder sowas. leider hab ich gar keine ahnung von panes und panels und so und wäre dankbar, jemand könnte mir da ein bisschen weiterhelfen :)
 
bin jetzt soweit: leider bekommich das mit dem imageIcon(url) nicht hin

PHP:
import javax.swing.*;
import java.awt.*;
import java.awt.image.*;
import java.applet.Applet;
import java.io.*;
import java.net.*;

public class camAction extends JApplet {
   
// DEKLARIEREN der CONTROLS
	


    JButton jB1 = new JButton();
    JButton jB2 = new JButton();
    JButton jB3 = new JButton();
    JButton jB4 = new JButton();
    JLabel  jL1 = new JLabel(new ImageIcon());
   
    TextArea jTF1 = new TextArea("Text",8,8,1);
    String str = new String("");
    public Image image;
    public ImageObserver imgO1;
   
   
    public void init() {
    	try{
    		URL strg = new URL("http://virtual.finland.fi/finfo/images/season/webcam7.jpg");
    		}
    	catch(MalformedURLException e){
    		;
    		}
        //JFrame f = new JFrame();
        //setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
//    f.applyComponentOrientation( ComponentOrientation.RIGHT_TO_LEFT );
        setLayout( new BorderLayout(5, 5) );
        getRootPane().putClientProperty(
                "defeatSystemEventQueueCheck", Boolean.TRUE);
       
// INIT_CONTROLS
// Eventuelles Layout zurücksetzen
       
        getContentPane().setLayout(null);
       
// Hintergrundfarbe setzen
       
        getContentPane().setBackground(java.awt.Color.lightGray);
       
// Größe Applet
       
        setSize(450,350);
       
// Belegen der CONTROLS mit Werten
// danach hinzufügen.
// Als dritten Schritt legen wir in dem
// Beispiel die exakte Position und Größe
// des Controls fest
       
       
        jB1.setText("Links");
        jB1.setBorder(javax.swing.BorderFactory.createEtchedBorder());
        getContentPane().add(jB1);
        jB1.setBounds(60,220,140,50);
       
        jB2.setText("Rechts");
        jB2.setBorder(javax.swing.BorderFactory.createEtchedBorder());
        getContentPane().add(jB2);
        jB2.setBounds(228,220,140,50);
       
        jB3.setText("Hoch");
        jB3.setBorder(javax.swing.BorderFactory.createEtchedBorder());
        getContentPane().add(jB3);
        jB3.setBounds(60,168,140,50);
       
        jB4.setText("Runter");
        jB4.setBorder(javax.swing.BorderFactory.createEtchedBorder());
        getContentPane().add(jB4);
        jB4.setBounds(228,168,140,50);
       
       // getContentPane().add(jTF1);
       // jTF1.setBounds(60,24,324,38);
        jL1.setBorder(javax.swing.BorderFactory.createEtchedBorder());
        jL1.setSize(240, 180);
        getContentPane().add(jL1);
       

       
// REGISTIEREN und EINRICHTEN der LISTENER
// Erster Schritt: Erzeugen eines Objekts der
// Klasse, wo die Auswertung der Events erfolgt.
       
        jRB meineMaus = new jRB();
       
// Registrieren der Listener
// - hier nur Mauslistener
       
        jB1.addMouseListener(meineMaus);
        jB2.addMouseListener(meineMaus);
        jB3.addMouseListener(meineMaus);
        jB4.addMouseListener(meineMaus);
       
        //xportwebcam
       
       
    }
   
// Klasse zum Auswerten der Reaktionen
   
    class jRB extends java.awt.event.MouseAdapter {
       
// Die Methode ruft je nach angeklicktem Control
// die entsprechende Methode zum Behandeln auf.
       
        public void mouseClicked(java.awt.event.MouseEvent event){
           
            Object object = event.getSource();
           
            if (object == jB1)
                jB1_mouseClicked(event);
           
            else if (object == jB2)
                jB2_mouseClicked(event);
           
            else if (object == jB3)
                jB3_mouseClicked(event);
           
            else if (object == jB4)
                jB4_mouseClicked(event);
           
        }
       
    }
   
    void jB1_mouseClicked(java.awt.event.MouseEvent event) {
        str = "Links";
        jTF1.append("\n" +"<user> " +  str);
    }
   
    void jB2_mouseClicked(java.awt.event.MouseEvent event) {
        str = "Rechts";
        jTF1.append("\n" +"<user> " +  str);
    }
   
    void jB3_mouseClicked(java.awt.event.MouseEvent event) {
        str = "Hoch";
        jTF1.append("\n" +"<user> " +  str);
    }
   
    void jB4_mouseClicked(java.awt.event.MouseEvent event) {
        str = "Runter";
        jTF1.append("\n" +"<user> " +  str);
    }
   
}
]
 
also das mit dem label klappt jetzt,
von localhost/cam/ läd er es (und zeigt es auch an
, aber nur mit getImage, ImageIcon(url) alleine macht nichts),
von extern leider nicht: (ich ändere nur die url, sonst nichts!)

PHP:
try{
           
           if (webcam!=null) webcam.flush();
       
                webcam =  getToolkit().getImage(new URL("http://my.saudi.net.sa/webcam/"));

           
           
           
            JLabel  jL1 = new JLabel(new ImageIcon(webcam));
            jL1.setBorder(javax.swing.BorderFactory.createEtchedBorder());
            jL1.setSize(240, 180);
            getContentPane().add(jL1);
           
        } catch(MalformedURLException e){
            ;
        }
 
es lag am proxy server, geht jetzt !!
leider klappts mit dem thread nicht:

PHP:
import javax.swing.*;
import java.awt.*;
import java.awt.image.*;
import java.applet.Applet;
import java.io.*;
import java.net.*;
import java.util.Date;

public class camAction extends JApplet implements Runnable {

	// DEKLARIEREN der CONTROLS

	JButton jB1 = new JButton();

	JButton jB2 = new JButton();

	JButton jB3 = new JButton();

	JButton jB4 = new JButton();

	// JLabel jL1 = new JLabel(new ImageIcon());
	public Image webcam;

	TextArea jTF1 = new TextArea("Text", 8, 8, 1);

	String str = new String("");

	public Image image;

	public ImageObserver imgO1;

	Thread thread;

	public void init() {

		// JFrame f = new JFrame();
		// setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
		// f.applyComponentOrientation( ComponentOrientation.RIGHT_TO_LEFT );
		setLayout(new BorderLayout(5, 5));
		getRootPane().putClientProperty("defeatSystemEventQueueCheck",
				Boolean.TRUE);

		// INIT_CONTROLS
		// Eventuelles Layout zurücksetzen

		getContentPane().setLayout(null);

		// Hintergrundfarbe setzen

		getContentPane().setBackground(java.awt.Color.lightGray);

		// Größe Applet

		setSize(450, 350);

		// Belegen der CONTROLS mit Werten
		// danach hinzufügen.
		// Als dritten Schritt legen wir in dem
		// Beispiel die exakte Position und Größe
		// des Controls fest

		jB1.setText("Links");
		jB1.setBorder(javax.swing.BorderFactory.createEtchedBorder());
		getContentPane().add(jB1);
		jB1.setBounds(60, 220, 140, 50);

		jB2.setText("Rechts");
		jB2.setBorder(javax.swing.BorderFactory.createEtchedBorder());
		getContentPane().add(jB2);
		jB2.setBounds(228, 220, 140, 50);

		jB3.setText("Hoch");
		jB3.setBorder(javax.swing.BorderFactory.createEtchedBorder());
		getContentPane().add(jB3);
		jB3.setBounds(60, 168, 140, 50);

		jB4.setText("Runter");
		jB4.setBorder(javax.swing.BorderFactory.createEtchedBorder());
		getContentPane().add(jB4);
		jB4.setBounds(228, 168, 140, 50);

		// getContentPane().add(jTF1);
		// jTF1.setBounds(60,24,324,38);

		thread = new Thread(this);
		thread.start();

		/*
		 * Alles nass. Es regnet oder es hat gerade geregnet. Alles trocken. Es
		 * wird bald wieder regnen. Alles weiß. Es ist Winter oder Herbst oder
		 * Frühling. Bäume wackeln. Wind. Kamera wackelt auch. Ganz schön
		 * starker Wind. Tropfen auf der Linse. Horizontalregen aus West. Nur
		 * Grau. Nebel oder Regen oder Schneetreiben oder alles durcheinander.
		 * Unscharfes Bild. Erdbeben. Kopfstehendes Bild. Nach dem Erdbeben.
		 * Falsche Uhrzeit. Relativistische Effekte. Spinne im Bild. Angriff der
		 * Killer-Insekten. Vogel im Sturzflug. Alfred Hitchcock lässt grüßen.
		 * Matschfleck. Ein Volltreffer. Grünliches Negativ. Die Software fühlt
		 * sich unwohl. Dasselbe in Rot oder Blau. Schlimmes Bauchweh. Bunte
		 * Flecken. Ausgeprägter Rauschzustand. Halbes Bild. Geduuuld ... Gar
		 * nix. Schade.
		 */

		// REGISTIEREN und EINRICHTEN der LISTENER
		// Erster Schritt: Erzeugen eines Objekts der
		// Klasse, wo die Auswertung der Events erfolgt.
		jRB meineMaus = new jRB();

		// Registrieren der Listener
		// - hier nur Mauslistener

		jB1.addMouseListener(meineMaus);
		jB2.addMouseListener(meineMaus);
		jB3.addMouseListener(meineMaus);
		jB4.addMouseListener(meineMaus);

		// xportwebcam

		// camPaint();
	}

	public void destroy() {
		thread = null; // Beim Verlassen des Applets setze den Thread auf null
	}

	public void run() {
		while (true) // solange true, also immer
		{
			camPaint(); // rufe paint auf
			try // und versuche, 500 Millisekunden zu warten
			{
				Thread.sleep(500);
			} catch (InterruptedException e) // wenn das mit dem Warten nicht
												// geklappt hat,
			{
				System.out.println(e); // dann gib einen Fehler aus.
			}
		}

	}

	public void camPaint() {

		try {

			if (webcam != null)
				webcam.flush();
			// URL strg = new URL("http://localhost/cam/");
			webcam = getToolkit().getImage(
					new URL("http://my.saudi.net.sa/webcam/"));
			// ImageIcon img = new ImageIcon(strg);
			MediaTracker MT = new MediaTracker(this);
			MT.addImage(webcam, 0);

		} catch (MalformedURLException e) {
			JLabel jL1 = new JLabel("Hallo Fehler");
		}

		JLabel jL1 = new JLabel(new ImageIcon(webcam));
		jL1.setBorder(javax.swing.BorderFactory.createEtchedBorder());
		jL1.setSize(240, 180);
		getContentPane().add(jL1);
		
	}

	// Klasse zum Auswerten der Reaktionen

	class jRB extends java.awt.event.MouseAdapter {

		// Die Methode ruft je nach angeklicktem Control
		// die entsprechende Methode zum Behandeln auf.

		public void mouseClicked(java.awt.event.MouseEvent event) {

			Object object = event.getSource();

			if (object == jB1)
				jB1_mouseClicked(event);

			else if (object == jB2)
				jB2_mouseClicked(event);

			else if (object == jB3)
				jB3_mouseClicked(event);

			else if (object == jB4)
				jB4_mouseClicked(event);

		}

	}

	void jB1_mouseClicked(java.awt.event.MouseEvent event) {
		str = "Links";
		jTF1.append("\n" + "<user> " + str);
	}

	void jB2_mouseClicked(java.awt.event.MouseEvent event) {
		str = "Rechts";
		jTF1.append("\n" + "<user> " + str);
	}

	void jB3_mouseClicked(java.awt.event.MouseEvent event) {
		str = "Hoch";
		jTF1.append("\n" + "<user> " + str);
	}

	void jB4_mouseClicked(java.awt.event.MouseEvent event) {
		str = "Runter";
		jTF1.append("\n" + "<user> " + str);
	}

}

im debugger gehts, aber beim ausführen wird das label garnicht erst angezeigt. gibts sowas wie updateLabel oder so ?
 
Zuletzt bearbeitet:
Oben