Fettdruck

cedi

Mitglied
Hi alle zusammen,
ich hab ein Problem:
Und zwar habe ich einen laaaaaaaaaaaaaangen String mit mehreren tausen Wörtern.
Und dieser wird nun auf einer Grafischen Oberfläche in einem JTextArea ausgegeben.
Nun will ich aber einzelne Wörter (genauer gesagt, sind es bestimmte Zahlen, die keine feste Formatierung etc haben) Fett drucken lassen. Also sie sollen innerhalb des JTextArea Fett gedruckt sein.
Ich habe schon stundenlang gegoogelt, und alles was ich bisher gefunden habe, hat nicht funktioniert.
Also ich habe es mal so versucht, dass ich das Wort, was ich Fett drucken will in einem Seperaten String habe, und dann html hinzufüge und dann über .replace() das wort im großen String zu ersetzen. Aber das funktioniert leider nicht.

ich hoffe mir kann jemand helfen :)

danke schonmal

cedi
 

homer65

Top Contributor
Mal ein einfaches Beispiel:
[Java]
package pack;
import javax.swing.*;
public class TestMenu extends Menu
{
private JEditorPane cpan = new JEditorPane();
public TestMenu()
{
super("TestMenu");
String html = "<html>";
html += "<body>";
html += "Hallo <b>Fett</b>";
html += "</body";
html += "</html>";
cpan.setContentType("text/html");
cpan.setText(html);
setContentPane(cpan);
}
}
[/Java]
 

cedi

Mitglied
Java:
        String html1 = "<html>";
        html1 +="<body>";
        html1 += va.wort();
        html1 += "</body>";
        html1 += "</html>";
        String replaced1 = ausgabeAusgangsDatei.getText();
        String wort1 = va.wort();
        replaced1 = replaced1.replace(wort1, html1);
        String html2 = "<html>";
        html2 +="<body>";
        html2 += va.wort();
        html2 += "</body>";
        html2 += "</html>";
        String wort2 = vu.wort();
        String replaced2 = ausgabeUebersetzteDatei.getText();
        replaced2 = replaced2.replace(wort2, html2);
wenn ich diesen Codeblock verwende, endet das immer ein einer exception mit dem inhalt:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at java.lang.String.replace(String.java:2228)
at gftlayoutchecker.MainWindow.buttonVergleicheClicked(MainWindow.java:131)
at gftlayoutchecker.MainWindow$1.actionPerformed(MainWindow.java:74)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6504)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6269)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4860)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4686)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2713)
at java.awt.Component.dispatchEvent(Component.java:4686)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:680)
at java.awt.EventQueue$4.run(EventQueue.java:678)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

ich hab schon alles mögliche versucht.
 
C

Camino

Gast
Dann schau dir doch die Fehlermeldung genauer an (vor allem den Anfang). Du bekommst eine NullPointerException, also ist irgendwas null (ein Objekt noch nicht initialisiert oder erstellt), auf das du zugreifen möchtest. Musst du nur noch schauen was und warum. Und du bekommst auch noch die Stelle geliefert, bei der das passiert:
Code:
at gftlayoutchecker.MainWindow.buttonVergleicheClicked(MainWindow.java:131)
 
Zuletzt bearbeitet von einem Moderator:

cedi

Mitglied
ja, das ist mir auch klar. aber die variable kann nicht null sein.
Zeile 131 ist nur da, wo
Code:
va.wort
aufgerufen wird.
Und in er kalsse VA steht in der Funktion wort():
Java:
    public String wort(){
        String zahlAusgangsdateiTmp = zahlAusgangsDatei;
        return zahlAusgangsdateiTmp;
    }

und zahlAusgangsDatei ist gültig. Da ist inhalt vorhanden.
 
C

Camino

Gast
Dann mach doch mal Testausgaben auf der Konsole und lass dir die Werte z.B. für wort1 und wort2 ausgeben. Oder schau, was bei einer Ausgabe von va rauskommt. Irgendein Wert wird schon null sein. Bei so wenig Code kann man ja nicht viel sehen, sondern nur raten...
 

thE_29

Top Contributor
Vorallem was für nen Sinn hat diese Wort Methode? Da kannste gleich ein return machen..

Achja, das ist die Zeile wo der Fehler auftreten soll? Ansonsten poste die Codezeilen wo der Fehler aufgetrten ist ;)
 

cedi

Mitglied
jop. hab den Fehler gefunden.
War n Tippfehler in nem String, welchen ich mir über return zurückgeben lassen wollte. und der war natürlich null ;)
 

L-ectron-X

Gesperrter Benutzer
cedi hat gesagt.:
Java:
        String html2 = "<html>";
        html2 +="<body>";
        html2 += va.wort();
        html2 += "</body>";
        html2 += "</html>";
Auf solche Konstrukte solltest du lieber verzichten. Wenn es noch mehr wird, kann das Ganze recht unperformant werden.
Benutze daher am besten zur Verknüpfung von Strings den [japi]StringBuilder[/japi].
 

André Uhres

Top Contributor
Der Vorschlag von L-ectron-X könnte etwa so aussehen:
Java:
String html2 = (new StringBuilder()).append("<html><body>").
        append(va.wort()).
        append("</body>").
        append("</html>").
        toString();
Interessanterweise ist das dasselbe, was mein Compiler generiert, wenn ich es so schreibe:
Java:
String html2 = "<html>"
        + "<body>" 
        + va.wort() 
        + "</body>"
        + "</html>";
Gruß,
André
 

Neue Themen


Oben