B
ByeBye 31659
Hallo,
ich habe mir einen kleinen HTMLEditor selber gebaut, der aber nur die Schrift auf Fett, Kursiv und Unterstrichen einstellen kann. Nun ist mir aufgefallen, das er bei einem Zeilenumbruch kein "<br>" setzt, so das in den HTML Seiten kein Zeilenumbruch vorhanden ist.
Weiß jemand wie ich das lösen kann, dass er beim Betätigen der Enter-Taste an der Stelle ein "<br>" einsetzt?
Hier mein Cde für den HTMLEditor:
ich habe mir einen kleinen HTMLEditor selber gebaut, der aber nur die Schrift auf Fett, Kursiv und Unterstrichen einstellen kann. Nun ist mir aufgefallen, das er bei einem Zeilenumbruch kein "<br>" setzt, so das in den HTML Seiten kein Zeilenumbruch vorhanden ist.
Weiß jemand wie ich das lösen kann, dass er beim Betätigen der Enter-Taste an der Stelle ein "<br>" einsetzt?
Hier mein Cde für den HTMLEditor:
Code:
public class HTMLEditor extends JPanel {
private JButton btnFat = null;
private JButton btnItalic = null;
private JButton btnUnderline = null;
private JScrollPane scrPane = null;
private JEditorPane editPane = null;
private JPanel panActions = null;
private HTMLEditorKit htmlEditorKit = null;
/**
* Standardconstructor, initialisert die Komponenten, erstellt die grafische Oberfläche und setzt die Listener
*
*/
public HTMLEditor(){
initComponents();
drawGUI();
setListeners();
}
/**
* Erstellt die grafische Oberfläche
*
*/
private void drawGUI(){
setLayout(new BorderLayout());
panActions.setLayout(new FlowLayout(FlowLayout.LEFT));
scrPane.setPreferredSize(new Dimension(300, 100));
// TExtarea wird auf HTML umgestellt
editPane.setEditorKit(htmlEditorKit);
// Die HTML Funktionsbuttons, Fett, Kursiv und Uuterstrichen
panActions.add(btnFat);
panActions.add(btnItalic);
panActions.add(btnUnderline);
add(scrPane, BorderLayout.CENTER);
add(panActions, BorderLayout.SOUTH);
}
/**
* Initialisierung der Komponenten
*
*/
private void initComponents(){
btnFat = new JButton("F");
btnItalic = new JButton("K");
btnUnderline = new JButton("U");
editPane = new JEditorPane();
scrPane = new JScrollPane(editPane);
panActions = new JPanel();
htmlEditorKit = new HTMLEditorKit();
}
/**
* Setzt die Listener
*
*/
private void setListeners(){
// Der selektierte Text wird auf Fett gestellt oder sollte dieser bereits Fett sein, so wird er auf Normal gestellt
btnFat.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
boolean bold = false;
SimpleAttributeSet attributeSet = new SimpleAttributeSet();
DefaultStyledDocument styledDoc = (DefaultStyledDocument) editPane.getDocument();
for (int i = 0; i < (editPane.getSelectionEnd()-editPane.getSelectionStart());i++){
if (StyleConstants.isBold(styledDoc.getCharacterElement(editPane.getSelectionStart()+i).getAttributes())){
bold = true;
}
}
if (bold){
StyleConstants.setBold(attributeSet, false);
}
else{
StyleConstants.setBold(attributeSet, true);
}
styledDoc.setCharacterAttributes(editPane.getSelectionStart(), editPane.getSelectionEnd()-editPane.getSelectionStart(), attributeSet, false);
editPane.select(editPane.getSelectionStart(), editPane.getSelectionEnd());
}
});
// Der selektierte Text wird auf Kursiv gestellt oder sollte dieser bereits Kursiv sein, so wird er auf Normal gestellt
btnItalic.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
boolean italic = false;
SimpleAttributeSet attributeSet = new SimpleAttributeSet();
DefaultStyledDocument styledDoc = (DefaultStyledDocument) editPane.getDocument();
for (int i = 0; i < (editPane.getSelectionEnd()-editPane.getSelectionStart());i++){
if (StyleConstants.isItalic(styledDoc.getCharacterElement(editPane.getSelectionStart()+i).getAttributes())){
italic = true;
}
}
if (italic){
StyleConstants.setItalic(attributeSet, false);
}
else{
StyleConstants.setItalic(attributeSet, true);
}
styledDoc.setCharacterAttributes(editPane.getSelectionStart(), editPane.getSelectionEnd()-editPane.getSelectionStart(), attributeSet, false);
editPane.select(editPane.getSelectionStart(), editPane.getSelectionEnd());
}
});
//Der selektierte Text wird unterstrichen oder sollte dieser bereits unterstrichen sein, so wird er auf Normal gestellt
btnUnderline.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
boolean underline = false;
SimpleAttributeSet attributeSet = new SimpleAttributeSet();
DefaultStyledDocument styledDoc = (DefaultStyledDocument) editPane.getDocument();
for (int i = 0; i < (editPane.getSelectionEnd()-editPane.getSelectionStart());i++){
if (StyleConstants.isUnderline(styledDoc.getCharacterElement(editPane.getSelectionStart()+i).getAttributes())){
underline = true;
}
}
if (underline){
StyleConstants.setUnderline(attributeSet, false);
}
else{
StyleConstants.setUnderline(attributeSet, true);
}
styledDoc.setCharacterAttributes(editPane.getSelectionStart(), editPane.getSelectionEnd()-editPane.getSelectionStart(), attributeSet, false);
editPane.select(editPane.getSelectionStart(), editPane.getSelectionEnd());
}
});
}
/**
* Liefert den HTML-Text zurück
* @return Liefert den HTML-Text zurück
*/
public String getText(){
return editPane.getText();
}
/**
* Setzt den HTML-Text
* @param Text Setzt den HTML-Text
*/
public void setText(String Text){
editPane.setText(Text);
}
/**
* Gibt an, ob die Komponenten aktiv oder inaktiv sind, also sind diese anklickbar
* @param status Bearbeitungsstatus
*/
public void statusComponents(boolean status){
btnFat.setEnabled(status);
btnItalic.setEnabled(status);
btnUnderline.setEnabled(status);
editPane.setEnabled(status);
}
}