jTextPane

hansgerber

Mitglied
In einem TextPane möchte ich einen 5-zeiligen Text zentriert darstellen.
Verschiedenes habe ich recherchiert und bin so weit gekommen :

Java:
public class AboutBox extends javax.swing.JDialog {

    /** Creates new form AboutBox */
    public AboutBox(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
        initComponents();

     jTextPane1.setEditable(false);
     SimpleAttributeSet set = new SimpleAttributeSet();
     StyleConstants.setAlignment(set,StyleConstants.ALIGN_CENTER);
     StyleConstants.setFontFamily(set,"Times New Roman");
     StyleConstants.setFontSize(set,20);
     StyleConstants.setItalic(set,true);
     StyleConstants.setBold(set,true);
     jTextPane1.setParagraphAttributes(set,true);
     jTextPane1.setBackground(Color.gray);
  
    }

Leider wird jetzt nur der letzte Satz zentriert ausgegeben und zeigt auch die Attribute für Schriftart und -grösse. Die ersten 4 Zeilen bleiben linksbündig und in der Vorgabeschriftart.

Was ist denn hier falsch (oder fehlt) ?

Danke im Voraus !
Hans
 

hansgerber

Mitglied
Eigentlich gibt es nicht viel mehr Code.
Das TextPane befindet sich in einem Dialogfenster, das sich öffnet, wenn man in der Toolbar den Info-Button drückt. Den Text habe ich via Netbeans / Eigenschaften direkt in der Entwicklungs-GUI eingegeben.

Nun, der Dialog öffnet sich und man kann den Text lesen, die Formatierungen greifen aber nur für die letzte Zeile wie der beigefügte Screenshot zeigt.

Hans
 

Anhänge

  • Java-About.jpg
    Java-About.jpg
    43,2 KB · Aufrufe: 39

Suinos

Bekanntes Mitglied
Ich würde sagen, die Methode macht genau das, was sie beschreibt:
Java API hat gesagt.:
Applies the given attributes to paragraphs. If there is a selection, the attributes are applied to the paragraphs that intersect the selection. If there is no selection, the attributes are applied to the paragraph at the current caret position.
(Hervorhebung von mir.)

Du könntest also zuerst allen Text selektieren und dann die Attribute ändern.

Allerdings frage ich mich, ob eine andere Methode nicht geeigneter wäre:
Java API hat gesagt.:
Applies the given attributes to character content. If there is a selection, the attributes are applied to the selection range. If there is no selection, the attributes are applied to the input attribute set which defines the attributes for any new text that gets inserted.
(Hervorhebung von mir.)
 

Dit_

Bekanntes Mitglied
Hi
Versuch mal mit JTextField


Java:
JTextField f = new JTextField();
f.setHorizontalAlignment(JTextField.CENTER);


evtl. muss du noch
Java:
f.setBorder(BorderFactory.createEmptyBorder());
setzen.
 

Dit_

Bekanntes Mitglied
Ach stimmt!

dann so:

Java:
JTextPane tP = new JTextPane();
StyledDocument doc = tP.getStyledDocument();
MutableAttributeSet set = new SimpleAttributeSet();
StyleConstants.setAlignment(set , StyleConstants.ALIGN_CENTER);
doc.setParagraphAttributes(0, 0, set , true);
 

hansgerber

Mitglied
Java:
doc.setParagraphAttributes(0, 0, set , true);

Das war der springende Punkt. Wenn ich die ganzen Formatierungen dem StyledDocument zuweise, dann klappt es (wenn noch ich die zweite "0" durch die Länge des Textes ersetze).:applaus:
In meinem Code hatte ich die ganzen Formatierungen dem TextPane direkt zugeordnet.

@Suinos : Natürlich stimmt Dein Post, er hat nur nicht weitergeholfen, "setParagraphAttributes" hatte ich ja selbst verwendet, nur hatte es aus jetzt bekannten Gründen nicht funktioniert.

Hans
 


Schreibe deine Antwort... und nutze den </> Button, wenn du Code posten möchtest...
Ähnliche Java Themen
  Titel Forum Antworten Datum
J JTextPane "text/html" grafik implementieren... Java Basics - Anfänger-Themen 9
M jTextPane Bild anzeigen Java Basics - Anfänger-Themen 6
O JTextPane / JtextArea Zeilenabstand entfernen Java Basics - Anfänger-Themen 1
S Editorleiste für JtextPane Java Basics - Anfänger-Themen 0
J Möchte gern den Konsolen Output auf JTextPane umleiten Java Basics - Anfänger-Themen 4
H Interface JTextPane html formatiert kopieren Java Basics - Anfänger-Themen 2
S JtextPane problem... Java Basics - Anfänger-Themen 4
M Zeilenumbruch JTextPane Java Basics - Anfänger-Themen 2
B JTextPane nur bis bestimmtes stelle löschen Java Basics - Anfänger-Themen 6
D Object auf JTextpane / jTextArea casten? Java Basics - Anfänger-Themen 3
T JTextPane - setText kein kein neuladen der Bilder? Java Basics - Anfänger-Themen 8
S JFrame mit JTextPane serialisieren Java Basics - Anfänger-Themen 5
C JTextPane Formatierungen werden nicht gespeichert Java Basics - Anfänger-Themen 10
E formartierte Aussgabe mit JTextPane und String.format Java Basics - Anfänger-Themen 5
M JTextPane an den Anfang springen Java Basics - Anfänger-Themen 8
B Zugriff auf JTextPane in einem anderen Panel Java Basics - Anfänger-Themen 2
M JTextPane dynamisch erzeugen Java Basics - Anfänger-Themen 2
M Textformatierung JTextPane Java Basics - Anfänger-Themen 7
Developer_X Durch JTextPane eine Website anzeigen Java Basics - Anfänger-Themen 4
C Jtextpane text markieren Java Basics - Anfänger-Themen 3
K jTextPane: Farbe des markierten Textes ändern und auslesen? Java Basics - Anfänger-Themen 3
H JTextPane überschreiben Java Basics - Anfänger-Themen 2
F jTextPane einlesen Java Basics - Anfänger-Themen 3
E HTML in JTextPane Java Basics - Anfänger-Themen 6
D JTextPane & Text zentrieren Java Basics - Anfänger-Themen 1
D JTextPane Frage Java Basics - Anfänger-Themen 2
O Jtextarea bzw jtextpane rechtsbündig oder blocksatz Java Basics - Anfänger-Themen 6
G JTextPane und Bilderpositionieren Java Basics - Anfänger-Themen 2
G Probleme mit HTML-Tags in jTextPane Java Basics - Anfänger-Themen 5
G append in JTextPane Java Basics - Anfänger-Themen 6
G replaceRange und JTextPane? Java Basics - Anfänger-Themen 2
G JTextPane mit fester Größe? Java Basics - Anfänger-Themen 4

Ähnliche Java Themen


Oben