JTextPane: Text hinzufügen

ankmanu

Bekanntes Mitglied
Hi,

ich habe bisher folgendes Programm(layout) geschrieben(Ausschnitt):
Java:
import java.awt.*;
import javax.swing.*;

public class RobProgMAIN extends JFrame implements ActionListener  
{
public static void main(String[] argv)
{
RobProgMAIN mainApp = new RobProgMAIN();
}
private JTextField textField2;
private JTextPane textPane1;
private JTextPane textPane2;
private JTextPane textPane3;
JLabel label;
JButton button1;
JButton button2;

public RobProgMAIN()
{
super("6-Achs Roboterarm");
setExtendedState(Frame.MAXIMIZED_BOTH);
getContentPane().setLayout(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);

// Create the labels...
label = new JLabel(" Bitte 'Start' zum Starten drücken ");
label.setLocation(10,10);
label.setSize(label.getPreferredSize());

JLabel jl6 = new JLabel("Lade-/Speicherpfad des aufgenommenen Bildes:");
jl6.setLocation(450,150);
jl6.setSize(jl6.getPreferredSize());


//Create the TextPanes..
String content1 = "Programm wurde erfolgreich gestartet\n";
JTextPane textPane1 = new JTextPane();
textPane1.setText(content1);
textPane1.setLocation(10,50);
textPane1.setSize(410,620);

String content2 = "Tetxbeispiel1";
JTextPane textPane2 = new JTextPane();
textPane2.setText(content2);
textPane2.setLocation(850,480);
textPane2.setSize(410,190);

JTextField textField3 = new JTextField("C://WebcamPicture.jpg");
textField3.setLocation(450,170);
textField3.setSize(150,20);
textField3.setEditable(false);

// Create the two buttons...
button1 = new JButton("START");
button1.setBounds(450, 320, 330, 100);
button2 = new JButton("Notaus");
button2.setBounds(10, 680, 1255, 50);
button2.setBackground(new Color(255, 0, 0));
button2.setForeground(new Color(0, 0, 0));
// Add the action listeners
button1.addActionListener(this);
button2.addActionListener(this);

// Add the objects to the content pane...
getContentPane().add(label);
getContentPane().add(jl6);
getContentPane().add(button1);
getContentPane().add(button2);
getContentPane().add(textField3);
getContentPane().add(textPane1);
getContentPane().add(textPane2);

try{textPane2.getDocument().insertString(textPane2.getDocument().getLength(), 
  "Test zum anfügen von Text...\n", null);}
catch(Exception egf){/** sollte nie passieren*/}

setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource() == button1)
{              
label.setText("Programm gestartet...");
label.setSize(label.getPreferredSize());
try{
CamBildErstellen cbe = new CamBildErstellen ();}
catch(Exception ex){
System.out.println("Klasse CamBildErstellen konnte nicht geladen werden!!!");}
}
else if(e.getSource() == button2)
{              
label.setText("Programm wurde angehalten!");
label.setSize(label.getPreferredSize());
//HIER SOLL NUN TEXT ZU TEXTPANE1 HINZUGEFÜGT WERDEN, ABER WIE?

}  
}
}
Wie kann ich an der Stelle //HIER SOLL... Text zu TextPane1 hinzufügen?
Habe es bisher mit folgendem versucht:
Java:
try{textPane1.getDocument().insertString(textPane1.getDocument().getLength(), 
  "KLAPPT LEIDER NICHT\n", null);}
catch(Exception egf){/** sollte nie passieren*/}
und mit:
Java:
textPane1.setText("KLAPPT LEIDER AUCH NICHT");

Beim ausführen kommen immer ca. 10 Fehler, warum ist das so, denn weiter oben (vor public void actionPerformed) klappt es ja auch mit dem ersten Muster?

Weiß jemand eine Lösung für das Problem?

Vielen Dank im Vorraus

manu
 

ankmanu

Bekanntes Mitglied
Hi,

bei einmaligen pressen vom Button kommt:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at RobProgMAIN.actionPerformed(RobProgMAIN.java:201)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3255)
at java.awt.Component.processEvent(Component.java:6028)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2475)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

ich habe bei //HIER SOLL... nur folgenden abschnitt eingefügt:
Java:
textPane1.setText(textPane1.getText() + "Button pressed test");

Viele Grüße

manu
 

javimka

Top Contributor
Das Problem ist, dass textpanel1 beim Aufruf null ist.

Schau dir in deinem Code die Zeile 37 an, da steht: [c]JTextPane textPane1 = new JTextPane();[/c]. Losche das "JTextPane" am Anfang, so dass es so aussieht. [c]textPane1 = new JTextPane();[/c]. Dann funktioniert es.

Das gleiche gilt auch für die textPane2 und 3 in den Zeilen 43 und 48. Nimm die Klasse am Anfang der Zeile weg.
 

ankmanu

Bekanntes Mitglied
Hi,

super, jetzt klappt es einwandfrei!

Wie kann ich nun auch aus einer anderen Klasse text hinzufügen, das müsste doch auch gehen oder??

viele grüße

manu
 

Semox

Bekanntes Mitglied
Hallo ankmanu

Das geht auf jeden Fall. Ist nur die Frage, wie Du das da in der "anderen" Klasse machst mit dem Text. Wird das aus einer Datei gelesen? Aus der Konsole? Quasi zur Laufzeit aus irgeneiner Variable in einen StringBuffer geschrieben? Dann hängt es wohl in einem Objekt und das kann sicherlich per append() o.ä. übergeben werden.

Viele Grüße,
Semo
 

ankmanu

Bekanntes Mitglied
Hi,

also danke schon mal für die Antwort.
Es sieht wie folgt aus:
Klasse 1: (sehr gekürzt)
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.Graphics;
import java.awt.Image;
import java.applet.Applet;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import java.io.File;
import javax.swing.filechooser.FileFilter;

public class RobProgMAIN extends JFrame implements ActionListener  
{
public static void main(String[] argv)
{
RobProgMAIN mainApp = new RobProgMAIN();
}
private JTextPane textPane1;

public RobProgMAIN()
{
super("6-Achs Roboterarm");
JMenuBar mbar = new JMenuBar();
JMenu menudatei = new JMenu("Datei");
JMenu menuinformation = new JMenu("Information");
beenden = new JMenuItem("Beenden");
beenden.addActionListener(this);
menudatei.add(beenden);
ueber = new JMenuItem("...über");
ueber.addActionListener(this);
menuinformation.add(ueber);
mbar.add(menudatei);
mbar.add(menuinformation);
setJMenuBar( mbar );

setExtendedState(Frame.MAXIMIZED_BOTH);
getContentPane().setLayout(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);

//Create the TextPane..
String content9 = "";
textPane1 = new JTextPane();
textPane1.setText(content9);
textPane1.setLocation(10,220);
textPane1.setSize(410,430);
textPane1.setEditable(false);

// Create the button...
button1 = new JButton("START");
button1.setBounds(450, 320, 350, 100);
 
// Add the action listeners of the buttons...
button1.addActionListener(this);
 
// Add the objects to the content pane...
getContentPane().add(button1);
getContentPane().add(textPane1);

setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource() == button1)                                                            	/**Button 1 Aktion*/
{try{                                                                              		/**Zur nächsten Klasse wechseln */
Klasse_2  kl2 = new Klasse_2 ();
}
catch(Exception ex){
System.out.println("Klasse 2 konnte nicht geladen werden!!!");
}}
}
Und Klasse 2: (auch sehr gekürzt)
Java:
public class Klasse_2
{
  
    public Klasse_2()
    {
        /**Hier soll nun Text in das TextPane der anderen Klasse eingefügt werden....*/
    }

}
Wie kann ich nun Text von Klasse 2 ins TextPane von Klasse 1 übertragen?
Ich habe keine Datei, woraus der Text entnommen wird, er sollte einfach direkt eingetragen werden...
Wenn das nicht geht, bin ich natürlich bereit, auch eine solche "Textdatei" zu erstellen (wenn ich auch nicht weiß wie das geht ... :( )

Viele Grüße
manu
 

Semox

Bekanntes Mitglied
Hallo Manu

Klar geht das. Stelle mal vor man müßte erst alles in eine Datei schreiben, bevor man die Daten bekäme, die man braucht... :D

Also Du brauchst Getter und Setter. Das Prinzip ist Dir klar? Du erhältst aus dem Textfeld die Daten, die in einen String gepackt werden. Dieser String überschreibt ein Setter Objekt einer anderen Methode. Damit Du aber aus einer anderen Klasse auf den Inhalt wieder zugreifen kannst, mußt Du eine Methode benutzen. Denn ein String Objekt kann man IMO nicht einfach auslesen. Ist auf jeden Fall unschön. Darum hier ein Beispiel.

Java:
public class Klasse2 {

	String text;
	
	public void setString(String inhaltVonsDerBox) {
		inhaltVonsDerBox = text;  // String wird überschrieben
	}
	
	public String getString() { 
		return inhaltVonsDerBox;  // hier holt sich die andere Klasse den Inhalt wieder ab
	}
}

Java:
public class RobProgMAIN {

	public RobProgMAIN() {
		Klasse2 textWillich = new Klasse2();  // es ensteht ein Objekt auf Basis der anderen Klasse
		textWillich.getString(); // so... Inhalt ist nun abgeholt und will verwendet werden...
	}
}

Hoffe das hilft?

Grüße,
Semo
 

ankmanu

Bekanntes Mitglied
Hi,

danke, aber so klappt es bei mir irgendwie nicht...
Kannst du mir mal ein konkretes Beispiel geben? (Einfach mit dem Text "Hallo Welt")

Viele Grüße

manu
 

Semox

Bekanntes Mitglied
Hallo

Ich dachte das wäre schon konkret. Hmm, na jut. Denn kiek mal weiter unten... ;-)

Java:
public class Hauptklasse {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		System.out.println(TuWas.getInhalt());
	}

}

Java:
public class TuWas {

	private static String inhalt = "Dieser String kommt aus Deinem Textfeld.";

	public void setInhalt(String inhalt) {
		// Mittels des Setters kannst Du beliebig und bequem den Text von inhalt
		// aendern.
		this.inhalt = inhalt;
	}

	public static String getInhalt() {
		// Diese Methode soll einfach nur den Inhalt vom String inhalt
		// zurueckgeben, damit man den String auch in der Hauptklasse verwenden
		// kann.
		return inhalt;
	}

}

Das sollte gehen. Ist getestet.

Grüße,
Semo
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N JTextPane und Text zu bereits existierenden Text hinzufügen? AWT, Swing, JavaFX & SWT 8
M Swing JTextPane, Bilder und Text-flow AWT, Swing, JavaFX & SWT 2
E Swing jTextPane Text datei anzeigen AWT, Swing, JavaFX & SWT 7
T Text in JTextPane vertikal (!) zentrieren AWT, Swing, JavaFX & SWT 4
C Swing JTextPane zeigt HTML-Text aus Variable nicht an :( AWT, Swing, JavaFX & SWT 3
E Swing JTextPane Inhalt(Text und Bilder) als HTML text bekommen AWT, Swing, JavaFX & SWT 3
D JTextPane - Text andersfarbig unterstreichen AWT, Swing, JavaFX & SWT 7
S JTextPane - markierten Text Formatieren AWT, Swing, JavaFX & SWT 11
M Makierten Text in JTextPane zentrieren AWT, Swing, JavaFX & SWT 2
D JTextPane Text anklickbar machen bzw. Hyperlink erstellen? AWT, Swing, JavaFX & SWT 5
F Vertikaler Text in einem JTextPane AWT, Swing, JavaFX & SWT 3
D Text in JTextPane vergrößern AWT, Swing, JavaFX & SWT 12
M JTextPane schreibt keinen farbigen Text! AWT, Swing, JavaFX & SWT 7
P JTextPane ALIGN_JUSTIFIED zeigt den Text zentriert an? AWT, Swing, JavaFX & SWT 8
0 Mehrfarbigen Text in JTextPane einfügen AWT, Swing, JavaFX & SWT 2
Z JTextPane (text/html): Schrift festlegen AWT, Swing, JavaFX & SWT 5
B Stylen eines JTextPane funktioniert nicht AWT, Swing, JavaFX & SWT 1
T JTextPane ignoriert HTML Zeilenumbruch <br> tag wegen eigenem HTMLEditorKit AWT, Swing, JavaFX & SWT 5
J Swing JTextpane aktuallisiert nicht den setText? AWT, Swing, JavaFX & SWT 9
M Strings im JTextPane vergleichen und mit StyledDocument formatieren AWT, Swing, JavaFX & SWT 3
X JTextPane automatischer Zeilenumbruch IM Wort AWT, Swing, JavaFX & SWT 2
R GUI Element in einer Methode aktualisieren (JTextPane) AWT, Swing, JavaFX & SWT 13
D Swing Breite einer HTML Tabelle in einer JTextPane AWT, Swing, JavaFX & SWT 6
S Swing Warum funktioniert der automatische Zeilenumbruch mit arabischen Zeichen beim JTextPane nicht AWT, Swing, JavaFX & SWT 3
S Swing JtextPane sau langsam AWT, Swing, JavaFX & SWT 15
J Swing JTextPane mit JScrollPane auf JPanel scrollen nicht AWT, Swing, JavaFX & SWT 6
C JTextPane scrollt mit setText() immer nach oben AWT, Swing, JavaFX & SWT 2
S Swing Style Attribute aus JTextPane kopieren AWT, Swing, JavaFX & SWT 1
E JTextPane Focus AWT, Swing, JavaFX & SWT 1
TheJavaKid JTextPane: komplexe Formatierung (links) AWT, Swing, JavaFX & SWT 2
B Swing JTextPane - Einfärbungen auf "default" AWT, Swing, JavaFX & SWT 2
A Swing Einrücken mehrerer Zeilen per Tab in einem JTextPane/JTextArea AWT, Swing, JavaFX & SWT 3
T JtextPane Zeile aktualisieren AWT, Swing, JavaFX & SWT 3
T Hintergrundbild in JTextPane fixieren AWT, Swing, JavaFX & SWT 2
M Swing JTextPane frisst Anführungszeichen AWT, Swing, JavaFX & SWT 2
M Swing JTextPane + Scrollbar = Fragen AWT, Swing, JavaFX & SWT 15
H Swing JTextPane hat unästhetisches Scrollbar AWT, Swing, JavaFX & SWT 3
R Swing Renderproblem bei HTML in einer JTextPane AWT, Swing, JavaFX & SWT 12
N Swing JTextPane zur Anzeige von HTML AWT, Swing, JavaFX & SWT 2
xehpuk Swing Line-wrapping von JTextPane (in JScrollPane) AWT, Swing, JavaFX & SWT 3
Tobse Swing [JTextPane] Farbliche Hervorhebung AWT, Swing, JavaFX & SWT 9
X Swing JTextPane bei Größenänderung Formatierung behalten AWT, Swing, JavaFX & SWT 11
0 JTextPane copy/paste trotz editable(false) ? AWT, Swing, JavaFX & SWT 10
T Swing JTextPane Tastatureingabe abfangen AWT, Swing, JavaFX & SWT 4
B Durchsichtiges JScroll und JTextPane AWT, Swing, JavaFX & SWT 4
xehpuk Swing JTextPane in JScrollPane wird nicht ordentlich neugezeichnet AWT, Swing, JavaFX & SWT 3
S Swing JTextPane append formatprobleme AWT, Swing, JavaFX & SWT 5
C JTextPane / JEditorPane ohne Keywords farbig machen AWT, Swing, JavaFX & SWT 4
C Zeilenumbruch von JTextPane wird nicht erkannt AWT, Swing, JavaFX & SWT 2
S JEditorPane oder JTextPane? AWT, Swing, JavaFX & SWT 2
P Aktuelle Zeile in JTextPane farblich hervorheben AWT, Swing, JavaFX & SWT 3
J JTextPane Background setzen AWT, Swing, JavaFX & SWT 6
M Zugriff paralleler Threads auf selbes JTextPane AWT, Swing, JavaFX & SWT 6
M JTextPane - bewegungsloses Hintergrundsbild (Duplikat) AWT, Swing, JavaFX & SWT 2
B JTextPane formatierten Inhalt speichern AWT, Swing, JavaFX & SWT 2
E JTextPane setText ignoriert \n AWT, Swing, JavaFX & SWT 6
P Swing Sichtbaren teil eines JTextPane herausbekommen (mit JScrollPane) AWT, Swing, JavaFX & SWT 2
T Zeichen zählen JTextPane AWT, Swing, JavaFX & SWT 4
K Swing JTextPane Formatierungen SyntaxHighlighting AWT, Swing, JavaFX & SWT 11
F Mit TAB JTextPane wechseln AWT, Swing, JavaFX & SWT 5
J JSlider auf JTextPane? AWT, Swing, JavaFX & SWT 2
S Buchstabenpositionen in JTextPane erhalten..? AWT, Swing, JavaFX & SWT 5
I JTextPane und Hyperlink (ohne JEditorPane) AWT, Swing, JavaFX & SWT 5
T Swing JTextArea, JTextPane, JEditorPane...Unterschied?! AWT, Swing, JavaFX & SWT 3
A Swing JTextPane sehr langsam AWT, Swing, JavaFX & SWT 6
P Drucken von Jtextpane mit Seitenangabe AWT, Swing, JavaFX & SWT 1
M Swing JTextPane mit JScrollPane soll aussehen wie JLabel AWT, Swing, JavaFX & SWT 3
K Swing jTextPane zeilenumbruch AWT, Swing, JavaFX & SWT 2
Stillmatic JTextPane langsam? AWT, Swing, JavaFX & SWT 5
E Swing JTextPane linewrap AWT, Swing, JavaFX & SWT 4
M Swing [JTextPane] Cursor lässt sich nicht mit Pfeiltasten bewegen AWT, Swing, JavaFX & SWT 3
T Swing xml in JTextPane mit EditorKit, StyledDocument & co. AWT, Swing, JavaFX & SWT 3
M Cursor setzen im JTextPane AWT, Swing, JavaFX & SWT 3
M Formatierungsfehler JTextPane WARUM ?? AWT, Swing, JavaFX & SWT 4
JavaKaffee Array auslesen in jTextPane? AWT, Swing, JavaFX & SWT 9
E JTextPane Bold Italic und Co AWT, Swing, JavaFX & SWT 6
M JTextPane Ende des Feldes AWT, Swing, JavaFX & SWT 4
P Probleme mit JTextpane AWT, Swing, JavaFX & SWT 7
M Größe von JTextPane manuell bei Bedarf anpassen AWT, Swing, JavaFX & SWT 6
bugmenot JTextPane String stimmt nicht mit übergebenem String überein AWT, Swing, JavaFX & SWT 9
C JTextPane <br oder <p> statt \n AWT, Swing, JavaFX & SWT 2
C JTextPane HTML und eigene Tags AWT, Swing, JavaFX & SWT 10
G JTextPane durchsichtig? AWT, Swing, JavaFX & SWT 6
GilbertGrape Fehler bei HTML in JTextPane AWT, Swing, JavaFX & SWT 2
S JTextPane: Probem mit AlignmentAction AWT, Swing, JavaFX & SWT 3
J Problem mit JTextPane & JScrollPane (horizontal) AWT, Swing, JavaFX & SWT 3
B JTextPane und Image importieren in HTML String. AWT, Swing, JavaFX & SWT 2
J JTextPane mit genau 80 Zeichen breite definieren? AWT, Swing, JavaFX & SWT 3
J Html in JTextPane anzeigen? AWT, Swing, JavaFX & SWT 2
Steev JTextPane mit Textformatierung funktioniert nicht AWT, Swing, JavaFX & SWT 5
P HTMLDocument in einem JTextPane. Anhängen von HTML-Code AWT, Swing, JavaFX & SWT 2
F JTextPane aktive Zeile AWT, Swing, JavaFX & SWT 2
G insert & JTextPane AWT, Swing, JavaFX & SWT 4
J JTextPane bekommt keinen Focus! AWT, Swing, JavaFX & SWT 3
S Farben eienr JTextPane dynamisch zuweisen AWT, Swing, JavaFX & SWT 2
R JTextPane scrollen vermeiden AWT, Swing, JavaFX & SWT 2
B Feste Breite einer JTextPane, die HTML anzeigt AWT, Swing, JavaFX & SWT 8
A JScrollPane in JTextPane AWT, Swing, JavaFX & SWT 2
B Swing Logging: Ein/Ausblenden eines scrollenden JTextPane AWT, Swing, JavaFX & SWT 2
F Java JTextPane AWT, Swing, JavaFX & SWT 13

Ähnliche Java Themen

Neue Themen


Oben