TextPane rechtsbündig

mäcjava

Mitglied
Hallo,

ich verzweifel hier noch. Ich bekomme es einfach nicht hin den Text rechtsbündig zu formatieren. Ich habe es mal rechtsbündig gehabt, aber dann war die bold Formatierung weg. Ich habe meinen Code mal gepostet. Ich bin für jede Hilfe sehr dankbar:

Code:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextPane;

import javax.swing.text.MutableAttributeSet;
import javax.swing.text.SimpleAttributeSet;
import javax.swing.text.StyleConstants;


public class texteditor {
	boolean bold_id = false;
	

	JTextPane textpane = new JTextPane();
	JFrame mainframe = new JFrame();
	JPanel poben = new JPanel();
	JPanel writepanel = new JPanel();
	JButton bold = new JButton("Bold");
	JButton rechts = new JButton("Rechtsbündig");
	
	public void createframe(){
		
		
		mainframe.setSize(800, 500);
		mainframe.setLayout(new BorderLayout());
		poben.add(bold);
		poben.add(rechts);
		writepanel.add(textpane);
		textpane.setPreferredSize(new Dimension(800,200));
		mainframe.add(poben,BorderLayout.NORTH);
		mainframe.add(writepanel,BorderLayout.CENTER);
		
	      rechts.addActionListener(new ActionListener() {
				
				public void actionPerformed(java.awt.event.ActionEvent e) {
			     MutableAttributeSet right = new SimpleAttributeSet();
			      StyleConstants.setAlignment(right,StyleConstants.ALIGN_RIGHT);
			      textpane.setCharacterAttributes(right, true);  
				}});
		
        bold.addActionListener(new ActionListener() {
			
			public void actionPerformed(java.awt.event.ActionEvent e) {

			if(bold_id == false){
				bold_id = true;	
		 	MutableAttributeSet bold = new SimpleAttributeSet();
			StyleConstants.setBold (bold, true);
			textpane.setCharacterAttributes(bold, false);
			
			}
			
			else
			if(bold_id == true){
				bold_id = false;
			MutableAttributeSet rebold = new SimpleAttributeSet();
			StyleConstants.setBold (rebold, false);
			textpane.setCharacterAttributes(rebold, false);
			}
	
			}});
		
		
		mainframe.setVisible(true);
		
		
	}
	
	
	public static void main(String[] args){
		
		texteditor tn = new texteditor();
		tn.createframe();
	}
	

}
 
Moin,

nur mal nen Codeschnipsel der Dir eventuell weiterhilft:

Java:
textpane.setText("Testtext");
SimpleAttributeSet sas = new SimpleAttributeSet();
StyleConstants.setAlignment(sas, StyleConstants.ALIGN_RIGHT);
textpane.setParagraphAttributes(sas, true);

Gruß,
Xan
 
noch eine Frage :)

Ich habe noch den Einzug rechts hinzugefügt.

Warum positioniert sich der Cursor in der Mitte nach dem ich etwas Einzug RECHTS formatiert habe und dann ENTER drücke ?
Code:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextPane;

import javax.swing.text.MutableAttributeSet;
import javax.swing.text.SimpleAttributeSet;
import javax.swing.text.StyleConstants;


public class texteditor {
	boolean bold_id = false;
	

	JTextPane textpane = new JTextPane();
	JFrame mainframe = new JFrame();
	JPanel poben = new JPanel();
	JPanel writepanel = new JPanel();
	JButton bold = new JButton("Bold");
	JButton rechts = new JButton("Rechtsbündig");
	JButton links = new JButton("Linksbündig");
	JButton einzug = new JButton("Einzug RECHTS");
	
	public void createframe(){
		
		textpane.setContentType("text/html");
		mainframe.setSize(800, 500);
		mainframe.setLayout(new BorderLayout());
		poben.add(bold);
		poben.add(rechts);
		poben.add(einzug);
		poben.add(links);
		writepanel.add(textpane);
		textpane.setPreferredSize(new Dimension(800,200));
		mainframe.add(poben,BorderLayout.NORTH);
		mainframe.add(writepanel,BorderLayout.CENTER);
		
	      rechts.addActionListener(new ActionListener() {
				
				public void actionPerformed(java.awt.event.ActionEvent e) {
					SimpleAttributeSet sas = new SimpleAttributeSet();
					StyleConstants.setAlignment(sas, StyleConstants.ALIGN_RIGHT);
					textpane.setParagraphAttributes(sas, true); 	
				}});
	      
	     einzug.addActionListener(new ActionListener() {
				
				public void actionPerformed(java.awt.event.ActionEvent e) {
					SimpleAttributeSet sas = new SimpleAttributeSet();
					StyleConstants.setLeftIndent(sas, 22);
					textpane.setParagraphAttributes(sas, true); 	 	
				}});
	      
	      links.addActionListener(new ActionListener() {
				
				public void actionPerformed(java.awt.event.ActionEvent e) {
					SimpleAttributeSet sas = new SimpleAttributeSet();
					StyleConstants.setAlignment(sas, StyleConstants.ALIGN_LEFT);
					StyleConstants.setLeftIndent(sas, 22);
					textpane.setParagraphAttributes(sas, true); 	
				}});
        bold.addActionListener(new ActionListener() {
			
			public void actionPerformed(java.awt.event.ActionEvent e) {

			if(bold_id == false){
				bold_id = true;	
		 	MutableAttributeSet bold = new SimpleAttributeSet();
			StyleConstants.setBold (bold, true);
			textpane.setCharacterAttributes(bold, false);
			
			}
			
			else
			if(bold_id == true){
				bold_id = false;
			MutableAttributeSet rebold = new SimpleAttributeSet();
			StyleConstants.setBold (rebold, false);
			textpane.setCharacterAttributes(rebold, false);
			}
	
			}});
		
		
		mainframe.setVisible(true);
		
		
	}
	
	
	public static void main(String[] args){
		
		texteditor tn = new texteditor();
		tn.createframe();
	}
	

}
 
Moin,

ich würde mal sagen, dass Du entweder den Stil zurücksetzen solltest,
sobald Enter gedrückt wird - weiß grad nicht, ob der gesetzte Stil übernommen wird.
Oder aber Du versuchst auch mal ein repaint für das TextPane.

Gruß,
Xan
 
Also das Problem besteht weiterhin. Nachdem ich den Text z.B. mittig formatiert habe, dann springt der Cursor in die Mitte und die Formatierung ändert sich auch in eine sehr seltsame :confused:

Kann mir da keiner helfen :(:(:(:(
 
Zurück