J
Julyanne
Gast
Hallo!
Ich habe mal versucht, einen kleinen Texteditor mit einer Textarea zu erstellen .. (ich weiß,dass es dafür bessere Möglichkeiten gibt ^^)
Hänge allerdings jetzt schon seit einer Weile an einem Problem fest:
Ich habe für bold und italic eine JCheckbox eingerichtet und beide mit einem ItemListener verbunden, der so programmiert ist, dass die Schriftform der Selektierung entsprechend geändert wird (da ja auch beides ausgewählt sein kann).
Solange ich die Checkboxen aktiviere, läuft auch alles problemlos. Das Problem liegt im Deaktivieren - es passiert nichts! Ich habe probehalber mal an jede stelle des Quelltextes festgelegt, dass er einen Text in einem Label ausgeben soll, um genau zu überprüfen, was nicht funktioniert - dabei ist mir klargeworden, dass der Listener die Deaktivierung gar nicht wahrnimmt! [also genauer: "Eine Checkbox wurde deaktiviert!" erscheint niemals auf dem Label!]
Mir ist allerdings ziemlich unklar, warum ..
Ich kopier euch mal den Quelltextausschnitt rein (das ganze Programm wäre mit 250 Zeilen ja doch etwas viel ..)
das Abfragen der aktuellen Schrift ist natürlich dazu da, damit auch die aktuelle Schriftart und -größe beibehalten werden.
Vielen Dank schonmal für eure Hilfe!!
Julyanne
Ich habe mal versucht, einen kleinen Texteditor mit einer Textarea zu erstellen .. (ich weiß,dass es dafür bessere Möglichkeiten gibt ^^)
Hänge allerdings jetzt schon seit einer Weile an einem Problem fest:
Ich habe für bold und italic eine JCheckbox eingerichtet und beide mit einem ItemListener verbunden, der so programmiert ist, dass die Schriftform der Selektierung entsprechend geändert wird (da ja auch beides ausgewählt sein kann).
Solange ich die Checkboxen aktiviere, läuft auch alles problemlos. Das Problem liegt im Deaktivieren - es passiert nichts! Ich habe probehalber mal an jede stelle des Quelltextes festgelegt, dass er einen Text in einem Label ausgeben soll, um genau zu überprüfen, was nicht funktioniert - dabei ist mir klargeworden, dass der Listener die Deaktivierung gar nicht wahrnimmt! [also genauer: "Eine Checkbox wurde deaktiviert!" erscheint niemals auf dem Label!]
Mir ist allerdings ziemlich unklar, warum ..
Ich kopier euch mal den Quelltextausschnitt rein (das ganze Programm wäre mit 250 Zeilen ja doch etwas viel ..)
das Abfragen der aktuellen Schrift ist natürlich dazu da, damit auch die aktuelle Schriftart und -größe beibehalten werden.
Vielen Dank schonmal für eure Hilfe!!
Julyanne
Code:
public class BoxListener implements ItemListener{
public void itemStateChanged(ItemEvent e) {
if(e.getStateChange() == ItemEvent.SELECTED){ //soll bei Selektierung einer Checkbox durchlaufen (funktioniert auch tadellos)
label.setText(label.getText() + "Eine Checkbox wurde aktiviert!");
if(e.getSource() == bold){
label.setText(label.getText() + "bold wurde aktiviert!");
Font s = textfeld.getFont();
int groesse = s.getSize();
String schriftart = s.getFontName();
int stil = s.getStyle();
if(stil == Font.ITALIC){ //hier wird überprüft, ob der aktuelle Stil italic ist - wenn ja, wird bold+italic aktiviert
textfeld.setFont(new Font(schriftart, stil+Font.BOLD, groesse));
}
else{
textfeld.setFont(new Font(schriftart, Font.BOLD, groesse));
}
}
if(e.getSource() == italic){
label.setText(label.getText() + "italic wurde aktiviert!");
Font sch = textfeld.getFont();
int groesse = sch.getSize();
String schriftart = sch.getFontName();
int stil = sch.getStyle();
if(stil == Font.BOLD) {
textfeld.setFont(new Font(schriftart, stil+Font.ITALIC, groesse));
}
else{
textfeld.setFont(new Font(schriftart, Font.ITALIC, groesse));
}
}
if(e.getStateChange() == ItemEvent.DESELECTED){ //sollte bei Deselektierung eintreten ...
label.setText(label.getText() + "Eine Checkbox wurde deaktiviert!");
if(e.getSource() == bold){
label.setText(label.getText() + "bold wurde deaktiviert!");
Font sc = textfeld.getFont();
int groesse = sc.getSize();
String schriftart = sc.getFontName();
if(italic.isSelected() == true){
label.setText(label.getText() + "italic wurde deaktiviert!");
textfeld.setFont(new Font(schriftart, Font.ITALIC, groesse));
}
else {
textfeld.setFont(new Font(schriftart, Font.PLAIN, groesse));
}
}
}
}
}
}