tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von Fabio Hellmann
ERLEDIGT
JA
ANTWORTEN
9
ZUGRIFFE
435
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Trigoor2 Trigoor2 ist offline Mitglied Bronze
    Registriert seit
    Jul 2011
    Ort
    Karlsruhe
    Beiträge
    28
    Hallo Leute,

    habe ein Problem. Die Schriftart im JEditorPane ändert sich leider nicht.

    Quellcode:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    
    import javax.swing.Action;
    import javax.swing.JButton;
     
     
    public class frmRtf extends JPanel implements ActionListener{
        private JMenuItem mntmArial;
        private JEditorPane editorPane;
        private JMenuItem mntmVerdana;
     
        public static void main(String[] args) {
            JFrame frm = new JFrame();
            frm.getContentPane().add(new frmRtf());
            frm.setVisible(true);
            frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frm.setBounds(100, 100, 920, 593);
        }
        
        /**
         * Create the panel.
         */
        public frmRtf() {
            setLayout(new BorderLayout(0, 0));
            
            editorPane = new JEditorPane();
            add(editorPane);
            
            RTFEditorKit rtf = new RTFEditorKit();
            editorPane.setEditorKit(rtf);
            
            JMenuBar menuBar = new JMenuBar();
            add(menuBar, BorderLayout.NORTH);
            
            JMenu mnNewMenu = new JMenu("Schriftarten");
            menuBar.add(mnNewMenu);
            
            
            mntmArial = new JMenuItem("Arial");
            mntmArial.setFont(new Font("Arial", Font.PLAIN, 12));
            mnNewMenu.add(mntmArial);
            
            JMenuItem mntmCourier = new JMenuItem("Courier");
            mntmCourier.setFont(new Font("Courier New", Font.PLAIN, 12));
            mnNewMenu.add(mntmCourier);
            
            JMenuItem mntmTimesNewRoman = new JMenuItem("Times New Roman");
            mntmTimesNewRoman.setFont(new Font("Times New Roman", Font.PLAIN, 12));
            mnNewMenu.add(mntmTimesNewRoman);
            
            mntmVerdana = new JMenuItem("Verdana");
            mntmVerdana.addActionListener(this);
            mntmVerdana.setFont(new Font("Verdana", Font.PLAIN, 12));
            mnNewMenu.add(mntmVerdana);
        }
        
        public void actionPerformed(ActionEvent e) {
            if (e.getSource() == mntmVerdana) {
                do_mntmVerdana_actionPerformed(e);
                editorPane.setFont(new Font("Verdana", Font.PLAIN, 12));
            }
            if (e.getSource() == mntmArial) {
                do_mntmNewMenuItem_actionPerformed(e);
                editorPane.setFont(new Font("Arial", Font.PLAIN, 12));
            }
        }
        protected void do_mntmNewMenuItem_actionPerformed(ActionEvent e) {
        }
        protected void do_mntmVerdana_actionPerformed(ActionEvent e) {
        }
    }

    Wäre nett wenn ihr mir helfen könntet...

    Viele Grüße
    Trigoor
     

  2. #2
    Avatar von Fabio Hellmann
    Fabio Hellmann Fabio Hellmann ist offline Mitglied Brokat
    Registriert seit
    Aug 2011
    Ort
    München
    Beiträge
    494
    Hi,
    welcher Font ist denn Standardmäßig bei JEditorPane eingestellt? Mithilfe von deinem Code kannst du außerdem auch nur die Schriftart "Verdena" einstellen, da die anderen noch nicht zum ActionListener hinzugefügt hast.

    Gruß

    Fabio
     
    Bitte die Code-Tags verwenden. Bei Java-Code: [java]...[/java]

    Tutorials:
    Automatisches erzeugen eines Inhaltsverzeichnisses (Javascript)
    JAnimationPanel - Animationen für Swing/AWT
    SWTRatingBar (Bewertungs-Composite) selbst programmieren
    ____________________________________________________________________________
    Über eine Bewertung (Stern links unter dem Beitrag) oder ein Danke freue ich mich sehr.

  3. #3
    genodeftest genodeftest ist offline Mitglied Brillant
    Registriert seit
    Jun 2009
    Beiträge
    870
    Außerdem sind die Methoden
    Code java:
    1
    2
    3
    4
    
    protected void do_mntmNewMenuItem_actionPerformed(ActionEvent e) {
    }
    protected void do_mntmVerdana_actionPerformed(ActionEvent e) {
    }
    leer, du rufst die selsam benannte frmRtf() nicht auf.

    PS: du musst die Methodennamen nicht beim Programmieren obfuscaten
     
    Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
    Code java:
    1
    
    System.out.println("Hallo");
    hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.
    ___________
    Ubuntu Bug #1: Microsoft has a majority market share
    Casecon: Projekt leiser Käse

  4. #4
    Trigoor2 Trigoor2 ist offline Mitglied Bronze
    Registriert seit
    Jul 2011
    Ort
    Karlsruhe
    Beiträge
    28
    Hallo...,

    erst einmal Danke für die Tipps!

    @Fabio:
    Ich glaube der Standard bei JEditorPane dürfte "Times New Roman" sein.
    Im Moment habe ich nur ein Event hinter dem Menüeintrag "Verdana". Wollte es erst einmal ausprobieren.

    @genodeftest:
    Habe jetzt eine anonyme Klasse für den Event erstellt. Das Präfix frm bin ich von VB.NET gewöhnt.
    Obfuscaten bedeutet ja, dass ich den Quellcode verschleiere. Wo verschleiere ich denn da was?

    Code :
    1
    2
    3
    4
    
    protected void do_mntmNewMenuItem_actionPerformed(ActionEvent e) {
    }
    protected void do_mntmVerdana_actionPerformed(ActionEvent e) {
    }


    Habe meinen Quellcode ein bisschen verändert. Er sieht jetzt so aus:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    
    import java.awt.BorderLayout;
    import java.awt.Font;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    import javax.swing.JButton;
    import javax.swing.JDialog;
    import javax.swing.JEditorPane;
    import javax.swing.JFrame;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    import javax.swing.JPanel;
    import javax.swing.text.rtf.RTFEditorKit;
     
     
    public class frmRtf extends JPanel {
        private JMenuItem mntmArial;
        private JEditorPane editorPane;
        private JMenuItem mntmVerdana;
     
        public static void main(String[] args) {
            JFrame frm = new JFrame();
            frm.getContentPane().add(new frmRtf());
            frm.setVisible(true);
            frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frm.setBounds(100, 100, 920, 593);  
        }
        
        /**
         * Create the panel.
         */
        public frmRtf() {
            setLayout(new BorderLayout(0, 0));
            
            editorPane = new JEditorPane();
            add(editorPane);
            
            RTFEditorKit rtf = new RTFEditorKit();
            editorPane.setEditorKit(rtf);
            
            JMenuBar menuBar = new JMenuBar();
            add(menuBar, BorderLayout.NORTH);
            
            JMenu mnNewMenu = new JMenu("Schriftarten");
            menuBar.add(mnNewMenu);
            
            mntmVerdana = new JMenuItem("Verdana");
            mntmVerdana.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    editorPane.setFont(new Font("Verdana", Font.PLAIN, 12));
                    JDialog jd = new JDialog();
                    jd.show();
                }
            });
            mntmVerdana.setFont(new Font("Verdana", Font.PLAIN, 12));
            mnNewMenu.add(mntmVerdana);
        }
    }

    Zur Übersichtlichkeit habe ich mal die die anderen Menüeinträge rausgenommen.

    Viele Grüße
    Trigoor
    Geändert von Trigoor2 (20.08.11 um 13:15 Uhr)
     

  5. #5
    Avatar von Fabio Hellmann
    Fabio Hellmann Fabio Hellmann ist offline Mitglied Brokat
    Registriert seit
    Aug 2011
    Ort
    München
    Beiträge
    494
    Hi,
    mit Obfuscaten meinte er, dass du deine Variablen und Methoden (aus unserer Sicht) komisch benennst. (z.B.: ...mntm...****)

    Also ich habe im Internet mal ein Beispiel gefunden, wie man den Font eines JEditorPanes wohl noch ändern kann. Ich habe das nicht ausprobiert, daher kann ich nicht sagen, ob es wirklich funktioniert. Hier mal der Code:
    Code java:
    1
    2
    3
    4
    
            Font font = new Font("Arial", 12, Font.Bold);
            String bodyRule = "body { font-family: " + font.getFamily() + "; " +
                    "font-size: " + font.getSize() + "pt; }";
            ((HTMLDocument)editorPane.getDocument()).getStyleSheet().addRule(bodyRule);
    Und hier noch der Link, falls du selber mal auf die Seite schauen willst.

    Gruß

    Fabio
     
    Bitte die Code-Tags verwenden. Bei Java-Code: [java]...[/java]

    Tutorials:
    Automatisches erzeugen eines Inhaltsverzeichnisses (Javascript)
    JAnimationPanel - Animationen für Swing/AWT
    SWTRatingBar (Bewertungs-Composite) selbst programmieren
    ____________________________________________________________________________
    Über eine Bewertung (Stern links unter dem Beitrag) oder ein Danke freue ich mich sehr.

  6. #6
    Trigoor2 Trigoor2 ist offline Mitglied Bronze
    Registriert seit
    Jul 2011
    Ort
    Karlsruhe
    Beiträge
    28
    Hallo Fabio,

    Danke erst einmal dafür, dass Du für mich sogar google um Rat gefragt hast.
    Will ja ein rtf-Dokument. Kein HTML.
    Die Variable mntmNewMenuItem wird automtatisch vom WindowBuilder erzeugt.

    Habe folgenden Code probiert:

    Code :
    1
    2
    3
    4
    5
    
    Font font = new Font("Arial", 12, Font.BOLD);
    String bodyRule = "body { font-family: " + font.getFamily() +
     "; " +"font-size: " + font.getSize() +
     "pt; }";
    editorPane.setFont(font);

    Aber leider klappt das auch nicht.
     

  7. #7
    Avatar von Fabio Hellmann
    Fabio Hellmann Fabio Hellmann ist offline Mitglied Brokat
    Registriert seit
    Aug 2011
    Ort
    München
    Beiträge
    494
    Also soweit ich das jetzt beurteilen kann, ist es wahrscheinlich nicht möglich, mit "RTFEditorKit" den Font zu ändern. Das wird evtl. daran liegen, dass dieses EditorKit nicht von den Swingentwicklern entwickelt wurde.
    Was willst du denn später für ein Dokument als Ausgabe haben, dann kann man den Inhalt des JEditorPanes evtl. in das jeweilige Ausgabeformat umwandeln.

    Gruß

    Fabio
    Trigoor2 bedankt sich. 
    Bitte die Code-Tags verwenden. Bei Java-Code: [java]...[/java]

    Tutorials:
    Automatisches erzeugen eines Inhaltsverzeichnisses (Javascript)
    JAnimationPanel - Animationen für Swing/AWT
    SWTRatingBar (Bewertungs-Composite) selbst programmieren
    ____________________________________________________________________________
    Über eine Bewertung (Stern links unter dem Beitrag) oder ein Danke freue ich mich sehr.

  8. #8
    Trigoor2 Trigoor2 ist offline Mitglied Bronze
    Registriert seit
    Jul 2011
    Ort
    Karlsruhe
    Beiträge
    28
    Hallo Fabio,

    habe das Problem gelöst. Du hattest Recht. Mit RTFEditorKit klappt das nicht. Wozu gibt es die überhaupt? Und warum hat sie die Methode setFont, wenn es sowieso nicht klappt

    Habe aber jetzt eine Lösung gefunden!

    So funktioniert es:
    Code :
    1
    2
    3
    
            JEditorPane editorPane = new JEditorPane();
            editorPane.setContentType( "rtf" );
            editorPane.setFont(new Font("Verdana", Font.PLAIN, 72));

    Danke Fabio!

    Gruß
    Trigoor
     

  9. #9
    Avatar von Fabio Hellmann
    Fabio Hellmann Fabio Hellmann ist offline Mitglied Brokat
    Registriert seit
    Aug 2011
    Ort
    München
    Beiträge
    494
    Keine Ursache.
    Wenn du das Thema noch als erledigt markierst, wäre es super.
     
    Bitte die Code-Tags verwenden. Bei Java-Code: [java]...[/java]

    Tutorials:
    Automatisches erzeugen eines Inhaltsverzeichnisses (Javascript)
    JAnimationPanel - Animationen für Swing/AWT
    SWTRatingBar (Bewertungs-Composite) selbst programmieren
    ____________________________________________________________________________
    Über eine Bewertung (Stern links unter dem Beitrag) oder ein Danke freue ich mich sehr.

  10. #10
    Trigoor2 Trigoor2 ist offline Mitglied Bronze
    Registriert seit
    Jul 2011
    Ort
    Karlsruhe
    Beiträge
    28
    Ahhh..ja. Hatte den Button "erledigt" schon gesucht gehabt. Habe ihn jetzt gefunden. Bin ja neu hier.
     

Ähnliche Themen

  1. globale Variable in Funktion ändern klappt nicht
    Von Noeden im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 31.05.11, 13:24
  2. Antworten: 1
    Letzter Beitrag: 22.07.08, 22:01
  3. Antworten: 0
    Letzter Beitrag: 15.08.07, 13:59
  4. Antworten: 0
    Letzter Beitrag: 15.08.07, 13:59
  5. Antworten: 2
    Letzter Beitrag: 26.07.07, 12:38

Stichworte