tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
522
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    memgen memgen ist offline Grünschnabel
    Registriert seit
    Dec 2011
    Beiträge
    2
    moinmoin,

    ich bin dabei ein Chatprogramm zu schreiben und suche eine Möglichkeit verschiedene Dinge im Chatfenster darzustellen:

    -Text in verschiedenen Farben, Schriftarten & Größen etc.
    -Textdarstellung zentriert, rechts & linksbündig
    -automatischer Zeilenumbruch wenn die Breite des Chatfensters nicht ausreicht
    -Links die klickbar sein sollen (also durch Klicken im Systembrowser geöffnet werden)
    -Darstellung von Bildern
    -einfaches Anhängen einer neuen Nachricht ohne starke CPU-Belastung
    -Markierung des gesamten Textes (um ihn eventuell zu kopieren etc.)

    Bisherige Lösung war die Darstellung des Ganzen in HTML in einem JTextPane.
    Jede neue Nachricht wird ans Ende der HTML-Seite angefügt und die Seite neu aufgebaut, was sehr viel Leistung benötigt. Auch führt diese Lösung bei vielen schnell verschickten Nachrichten von Zeit zu Zeit zum Programmabsturz, ohne erkennbaren Grund, daher suche ich nach einer besseren Lösung

    Wenn jemand eine Lösung oder Anregungen hat, immer her damit!

    lG
    memgen
     

  2. #2
    doe300 doe300 ist offline Mitglied
    Registriert seit
    Jun 2009
    Beiträge
    16
    Mein Lösungsansatz wäre jetzt ähnlich wie deiner mit ein paar Veränderungen:
    - du brauchsd JTextPane oder JEditorPane zum Anzeigen
    - für das Formatieren nimmst du einen Syntax (HTML,BB, oder was ähnliches)
    - in den Methoden, in denen du formatierst fügst du einfach in dem zu sendenden Text deine Tags vor und hinter den ausgewählten Textabschnitt (oder bei HTML kannsd du auch Style im StyledDocument setzen)
    - für den automatischen Zeilenumbruch setzt du in deinem JTextArea-Objekt
    Code :
    1
    
    setLineWrap(true)
    - für das Anhängen einer Nachricht:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    void append(final String s)
        {
            final Document doc = this.text.getDocument();
    int index=doc.getLength();
            if (doc != null)
            {
                try
                {
                    doc.insertString(doc.getLength(), s, null);
                }
                catch (final BadLocationException e)
                {}
            }
    //Hier kommt dann deine Methode, die deine Formattierung ab der Position index anwendet, so dass nur der angehängte Text verarbeitet werden muss
        }
    - Zum Anwenden der Formatierung wählst du jeweils den Text innerhalb eines Tags aus und setzt im StyledDocument die jeweiligen Attribute
    Hier eine Methode um zum Beispiel die Schriftart eines ausgewählten Textabschnittes einheitlich zu ändern:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    //text ist meine JTextPane
    void setTextFont(final Font f)
        {
            if (this.text.getSelectedText() == null)
            {
                return;
            }
            final int i = this.text.getSelectionStart();
            final AttributeSet as =
                    ((JTextPane) this.text).getStyledDocument().getCharacterElement(i).getAttributes();
            final SimpleAttributeSet sas = new SimpleAttributeSet(as);
            StyleConstants.setFontFamily(sas, f.getFamily());
            StyleConstants.setFontSize(sas, f.getSize());
            StyleConstants.setBold(sas, f.isBold());
            StyleConstants.setItalic(sas, f.isItalic());
            ((JTextPane) this.text).getStyledDocument().setCharacterAttributes(i,
                    this.text.getSelectedText().length(), sas, true);
        }

    Hoffe du hasd meine Beschreibung verstanden
    doe300
     

Ähnliche Themen

  1. ICQ Popup im Chatfenster
    Von Taki80 im Forum Internetkommunikation
    Antworten: 3
    Letzter Beitrag: 14.07.07, 16:18
  2. Weißes Bild beim Porträt im Chatfenster
    Von Vys im Forum Internetkommunikation
    Antworten: 0
    Letzter Beitrag: 07.11.06, 20:43
  3. Antworten: 4
    Letzter Beitrag: 22.10.05, 21:59
  4. PHP Forum mit integrierten Chatfenster
    Von bigfella im Forum PHP
    Antworten: 6
    Letzter Beitrag: 17.02.05, 13:05