Bild und HTML

Status
Nicht offen für weitere Antworten.

bernd

Bekanntes Mitglied
Hallo erst mal!
Als erstes möchte ich mal möchte ich bekannt geben das ich folgende Frage auch schon in einem
anderen Forum gestellt habe, und auch Antworten bekommen habe.
Allerdings habe ich das Gefühl das ich mich da etwas ungeschickt ausgedrückt habe
oder wir schlicht aneinander vorbeigeredet haben. (oder ich das einfach nicht verstehe) ???:L

Deswegen versuche ich hier noch mal nen Neuanfang,
in der Hoffnung das ich das jetzt was besser rüber bringen kann!

Und zwar möchte ich per Knopfdruck ein Bild, "smile2.gif" mittels HTML-Tag (glaube das heißt so)
in einem JTextPane einfügen.
Das JTextPane soll den HTML-Tag anzeigen, aber als Bild und nicht als Code.

"smile.gif liegt im selben Arbeitsverzeichnis wie meine java Datei.

Mein code:

Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.util.*;
import javax.swing.text.html.HTMLEditorKit;

public class Datei1 extends JFrame {
  // Anfang Variablen
  static final JTextPane jtp1 = new JTextPane();
  private JButton jbusend = new JButton();
  // Ende Variablen

  public Datei1(final String title) {
    // Frame-Initialisierung
    super(title);
    addWindowListener(new WindowAdapter() {
      public void windowClosing(final WindowEvent evt) { System.exit(0); } });
    setBounds(10, 10, 600, 600);
    Container cp = getContentPane();
    cp.setLayout(null);

    // Anfang Komponenten
    jtp1.setBounds(5, 5, 300, 370);
     jtp1.setEnabled(false);
     getContentPane().add(jtp1);
    jbusend.setText("senden");
    jbusend.setBounds(400, 300, 100, 50);
    getContentPane().add(jbusend);
    jbusend.addActionListener(new ActionListener() {
      public void actionPerformed(final ActionEvent evt) {
        jbusendActionPerformed(evt); } });

    // Ende Komponenten

    setVisible(true);
  }

  // Anfang Ereignisprozeduren
  public void jbusendActionPerformed(final ActionEvent evt) {

     jtp1.setEditorKit(new HTMLEditorKit());
      //jtp1.setContentType("TEXT/HTML");
     String htmlText = "<IMG SRC=\"smile2.gif\">";

     System.out.println(htmlText);

     jtp1.setText(htmlText);

  }
  // Ende Ereignisprozeduren

  public static void main(final String[] args) {
    new Datei1("Datei1");
  }
}

Das Programm läßt sich compilieren und ausführen, aber statt des Bildes "smile2.gif" wird ein
Standartsymbol angezeigt!

Hat einer ne Idee???
???:L
 
Code:
public void jbusendActionPerformed(final ActionEvent evt) 
  {
	 jtp1.setEditorKit(new HTMLEditorKit());
	 jtp1.setContentType("text/html");
	 String path =  this.getClass().getResource("smile2.gif").getPath();
	 String prefix = "file://";
	 String htmlText = "<img src=\""+ prefix+path +"\">";
	 System.out.println(htmlText);
	 HTMLDocument doc = (HTMLDocument)jtp1.getDocument();
	 try
	 {
		((HTMLEditorKit)jtp1.getEditorKit()).insertHTML(doc, 0, htmlText, 0, 0, HTML.Tag.IMG);
	 }
	 catch (BadLocationException e1)
	 {
		e1.printStackTrace();
	 }
 	 catch (IOException e1)
	 {
		e1.printStackTrace();
	 }
Hier gibts noch mehr Informationen zu dem Thema: http://www.javaworld.com/javaworld/javatips/jw-javatip109.html
 
Danke sieht schon klasse aus, hab jetzt noch ne Fehlermeldung:
package HTML does not exist.

Was muss ich denn da noch importieren?

Gruß Bernd.
:toll:
 
Code:
import java.awt.Container;
import java.awt.event.*;
import java.io.IOException;
import javax.swing.*;
import javax.swing.text.BadLocationException;
import javax.swing.text.html.*;
oder in Eclipse einfach Strg + Shift + O drüchen 🙂
 
Erste Sahne,
Vielen Dank noch mal.
Funktioniert einwandfrei!
Ich wußte das es irgendwie gehen muss!
Im anderen Forum wurde mir gesagt, das Problem läge in meinem Programm,
ich sollte das am besten das Programm von anfang an noch mal neu schreiben.
:autsch:

:applaus:
 
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.util.*;
import javax.swing.text.html.HTMLEditorKit;
import java.awt.Container;
import java.io.IOException;
import javax.swing.text.BadLocationException;
import javax.swing.text.html.*;
/**
  *
  * Beschreibung.
  *
  * @version 1.0 vom 19.08.2004
  * @author Bernd
  */

public class UDP_S extends JFrame {
  // Anfang Variablen
  static final JTextPane jtp1 = new JTextPane();
  static final String newline = System.getProperty("line.separator");
  private JTextPane jtpeingabe = new JTextPane();
  private JButton jbusenden = new JButton();
  private JScrollPane jsp1 = new JScrollPane();
  private JButton jbuende = new JButton();
  private JScrollPane jsp2 = new JScrollPane();
  private JButton jbubeenden = new JButton();
  private JToolBar tb = new JToolBar();
  private JButton b1 = new JButton(new ImageIcon(UDP_S.class.getResource("smile2.gif")));
  private JButton b2 = new JButton(new ImageIcon(UDP_S.class.getResource("barney.gif")));
  private JButton b3 = new JButton(new ImageIcon(UDP_S.class.getResource("mill.gif")));
  private JButton b4 = new JButton(new ImageIcon(UDP_S.class.getResource("smile1.gif")));
  private JPanel panel = new JPanel();
  private JComboBox jcbIP = new JComboBox();
  private JButton jbuHost = new JButton();
  private JLabel jlbHost = new JLabel();
  private HTMLEditorKit MyEdKit = new HTMLEditorKit();
  
  // Ende Variablen

  public UDP_S(final String title){

    // Frame-Initialisierung
    super("Bernd sein Intranet - Chat, Version 1.0");
    addWindowListener(new WindowAdapter() {
      public void windowClosing(final WindowEvent evt) { System.exit(0); } });
    setBounds(20, 20, 600, 525);
    Container cp = getContentPane();
    cp.setLayout(null);

    // Anfang Komponenten
     tb.add(b1);
     tb.add(b2);
     tb.add(b3);
     tb.add(b4);
     tb.setRollover(true);
     tb.setFloatable(false);
     panel.add(tb);
     panel.setBackground(Color.green);
     panel.setBounds(310, 40, 170, 265);
     getContentPane().add(panel);
     
     b1.addActionListener(new ActionListener() {
      public void actionPerformed(final ActionEvent evt) {
        b1ActionPerformed(evt); } });
        
     b2.addActionListener(new ActionListener() {
      public void actionPerformed(final ActionEvent evt) {
        b2ActionPerformed(evt); } });
        
        b3.addActionListener(new ActionListener() {
      public void actionPerformed(final ActionEvent evt) {
        b3ActionPerformed(evt); } });

     b4.addActionListener(new ActionListener() {
      public void actionPerformed(final ActionEvent evt) {
        b4ActionPerformed(evt); } });

     jtp1.setBounds(5, 5, 300, 370);
     jtp1.setEnabled(false);
//     MyEdKit.createDefaultDocument();
//     jtp1.setEditorKit(MyEdKit);
     jtpeingabe.setBounds(5, 370, 300, 80);
     getContentPane().add(jtp1);
    getContentPane().add(jtpeingabe);
    jbusenden.setText("senden");
    jbusenden.setBounds(5, 455, 80, 25);
    getContentPane().add(jbusenden);
    jbusenden.addActionListener(new ActionListener() {
      public void actionPerformed(final ActionEvent evt) {
        jbusendenActionPerformed(evt); } });

    jsp1.setViewportView(jtp1);
    jsp1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
    jsp1.setBounds(5, 5, 300, 300);
    getContentPane().add(jsp1);
    jsp2.setBounds(5, 370, 300, 80);
    jsp2.setViewportView(jtpeingabe);
    getContentPane().add(jsp2);
    jbubeenden.setText("beenden");
    jbubeenden.setBounds(480, 455, 100, 25);
    getContentPane().add(jbubeenden);
    jbubeenden.addActionListener(new ActionListener() {
      public void actionPerformed(final ActionEvent evt) {
        jbubeendenActionPerformed(evt); } });
        
    jcbIP.addItem("");
    jcbIP.addItem("192.168.0.2");
    jcbIP.addItem("192.168.0.3");
    jcbIP.setEditable(true);
    jcbIP.setBounds(310, 5, 100, 25);
    jcbIP.setToolTipText("IP des Zielrechners eingeben!");
    getContentPane().add(jcbIP);

    jbuHost.setText("Hostname + IP");
    jbuHost.setToolTipText("ermittelt Host + IP vom eigenen Rechner");
    jbuHost.setBounds(310, 315, 120, 25);
    getContentPane().add(jbuHost);
    jbuHost.addActionListener(new ActionListener() {
      public void actionPerformed(final ActionEvent evt) {
        jbuHostActionPerformed(evt); } });

    jlbHost.setText("XXX . XXX . X . X . X");
    jlbHost.setBounds(310, 330, 320, 45);
    getContentPane().add(jlbHost);
    // Ende Komponenten
           setVisible(true);
  }
  // Anfang Ereignisprozeduren
   public void b1ActionPerformed(final ActionEvent evt) {
      jtpeingabe.setEditorKit(new HTMLEditorKit());
    jtpeingabe.setContentType("text/html");
    String path =  this.getClass().getResource("smile2.gif").getPath();
    String prefix = "file://";
    String htmlText = "<img src=\""+ prefix+path +"\">";
    System.out.println(htmlText);
    HTMLDocument doc = (HTMLDocument)jtpeingabe.getDocument();
    try
    {
      ((HTMLEditorKit)jtpeingabe.getEditorKit()).insertHTML(doc, 0, htmlText, 0, 0, HTML.Tag.IMG);

    }
    catch (BadLocationException e1)
    {
      e1.printStackTrace();
    }
    catch (IOException e1)
    {
      e1.printStackTrace();
    }
   }
  
   public void b2ActionPerformed(final ActionEvent evt) {
        ImageIcon img2 = new ImageIcon(UDP_S.class.getResource("barney.gif"));
        jtpeingabe.insertIcon(img2);
        jtpeingabe.requestFocus();
   }
   
   public void b3ActionPerformed(final ActionEvent evt) {
        ImageIcon img3 = new ImageIcon(UDP_S.class.getResource("mill.gif"));
        jtpeingabe.insertIcon(img3);
        jtpeingabe.requestFocus();
   }
   
   public void b4ActionPerformed(final ActionEvent evt) {
        ImageIcon img4 = new ImageIcon(UDP_S.class.getResource("smile1.gif"));
        jtpeingabe.insertIcon(img4);
        jtpeingabe.requestFocus();
   }
   
  public void jbusendenActionPerformed(final ActionEvent evt) {
        try
    {

        DatagramPacket packet;
        String ipAdresse = (String) jcbIP.getSelectedItem();
        InetAddress ia = InetAddress.getByName( ipAdresse );
        String s = jtpeingabe.getText();
        packet = new DatagramPacket( s.getBytes(),s.length(),ia,4711 );
        DatagramSocket dSocket = new DatagramSocket();
        dSocket.send( packet );
        String textanzeige = jtp1.getText();
        jtp1.setText(textanzeige + newline + s);
        jtpeingabe.setText("");
        jtpeingabe.requestFocus();
        dSocket.close();
    }
    catch ( Exception e )
    {
      System.out.println( e );
    }
  }

  public void jbubeendenActionPerformed(final ActionEvent evt) {
      System.exit(0);
  }

  public void jbuHostActionPerformed(final ActionEvent evt) {
     try {

        jlbHost.setText( "Host / Adresse: " + InetAddress.getLocalHost());

     }
     catch (Exception e)
     {
      System.out.println( e );
     }
  }
  // Ende Ereignisprozeduren

  public static void main(final String[] args) {
    new UDP_S("UDP_S");
    try
    {
      DatagramSocket socket = new DatagramSocket(4711);
      DatagramPacket packet;
      while (true)
      {
        // auf Anfrage warten
        packet = new DatagramPacket(new byte[1024], 1024);
        socket.receive(packet);
        //Empfang auslesen
        int port = packet.getPort();
        int len = packet.getLength();
        byte data[] = packet.getData();
        String textanzeige = jtp1.getText();
        jtp1.setText(textanzeige + "\n" + new String(data, 0, len));

      }
    }
    catch (Exception e)
    {
      System.out.println(e);
    }

  }

}

Ich nu wieder!
Also muss es auch möglich sein das Smile2.gif nach dem senden im jtp1 auch als Bild und nicht
als code darzustellen!
???:L
 
Danke, ich mach guck!
UDP, gute Frage.
Ich hatte mir in den Kopf gesetzt einen chat zu programmieren, also hab ich mir erst mal angeschaut wie das so gehen könnte!
Im Internet bin ich dann auf TCP und UDP gestoßen, wobei ich mich mit den Beispielen von TCP
etwas schweer getan habe.
also blieb noch UDP, und für einen chat im lokalem Netz denk ich sollte das reichen.
(konnte erst jetzt antworten, da ich meinen PC duch Renovierungsarbeiten total zugebaut habe ! 🙂 ).

MfG. Bernd.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben