Textformatierung

Status
Nicht offen für weitere Antworten.

FOXFOX

Mitglied
Hallo zusammen,

ich habe ein kleines Problemchen.
Und zwar versuche ich mittels Buttons einen Text in JTextPane zu formatieren.
Wenn ich auf die jeweiligen Buttons klicke funktioniert das auch, allerdings wenn ich nochmals klicke sollte die Formatierung aufgehoben werden, und ich wusste nicht wie ich das implementieren soll.
Vielen Dank im Voraus

Code:
    private class EventHandlerTextFormat
    	implements ActionListener{
    	
    	public void actionPerformed(ActionEvent e){
    		
    		if(e.getSource() == bold){
    			StyleConstants.setBold(style,true);
    		}else if(e.getSource() == italic){
    			StyleConstants.setItalic(style,true);
    		}else if(e.getSource() == underline){
    			StyleConstants.setUnderline(style,true);
    		}else if(e.getSource() == strikethrough){
    			StyleConstants.setStrikeThrough(style,true);
    		}
    	}
    }
 

dieta

Top Contributor
Versuch's mal so:
Der Status, ob der Text Fett, Kursiv etc. ist, wird in einer VAriable gespeichert.
Jedes Mal, wenn du nun auf einen Button klickst, wird nun die entsprechende Variable invertiert, das bedeutet, ihr Wert wird in sein Gegenteil geändert.
Dieser geänderte Wert wird dann dem Text unter der angegebenen Eigenschaft zugewiesen.

Code:
public class wasweisich
{

    //Die Variable die die Eigenschaften des Textes beinhalten (by J. Sebastian G.)
    public boolean bold = false;
    public boolean italic = false;
    public boolean underline = false;
    public boolean strikeThrough = false;


    private class EventHandlerTextFormat
       implements ActionListener{
       
       public void actionPerformed(ActionEvent e){
          
          if(e.getSource() == bold){
             bold = !bold;
             StyleConstants.setBold(style,bold);
          }else if(e.getSource() == italic){
             italic = !italic;
             StyleConstants.setItalic(style,italic);
          }else if(e.getSource() == underline){
             underline = !underline;
             StyleConstants.setUnderline(style,underline);
          }else if(e.getSource() == strikethrough){
             strikeThrough = !strikeThrough;
             StyleConstants.setStrikeThrough(style,strikeThrough);
          }
       }
    }
 

FOXFOX

Mitglied
vielen dank für deine hilfe dieta,
funktioniert einwandfrei.

jetzt würde ich halt wollen, dass nur der markierte Text formatiert wird.
Ich hab gelesen, dass man das mit der Klasse Hashtable() machen kann.
Hab auch bißle versucht was zu machen, aber bin nicht mehr weitergekommen.
Und vor allem wie ich das in der actionPerformed() Methode umsetzen muss.


Code:
public class wasweisich{

    //Die Variable die die Eigenschaften des Textes beinhalten (by J. Sebastian G.)
    public boolean bold, italic, underline, strikeThrough; 


    private class EventHandlerTextFormat
       implements ActionListener{
       
       public void actionPerformed(ActionEvent e){
         
          if(e.getSource() == bold){
             bold = !bold;
             StyleConstants.setBold(style,bold);
          }else if(e.getSource() == italic){
             italic = !italic;
             StyleConstants.setItalic(style,italic);
          }else if(e.getSource() == underline){
             underline = !underline;
             StyleConstants.setUnderline(style,underline);
          }else if(e.getSource() == strikethrough){
             strikeThrough = !strikeThrough;
             StyleConstants.setStrikeThrough(style,strikeThrough);
          }
       }


    public void initActionTable(){
    	actionTable= new Hashtable();
	Action[] actions = ......................//keine Ahnung was hierher kommt
	for (int i=0; i < actions.length; i++) {
		Action action = actions[i];
		actionTable.put(action.getValue(Action.NAME),action);
	}
    }



    }
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben