在jaditorpane中更改字体

yqhsw0fo  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(336)

java是我的第一种语言,我主要是用它创建cli应用程序,但两年前我放弃了c语言,但我还是选择了它,因为它似乎是最容易实现gui的语言。我正在编写一个简单的记事本,名为maketext,主要区别:黑暗主题。我想做一个工具栏按钮来改变字体(使用intellij idea ui builder)以下是使用工具栏按钮编辑页面的代码:

package GUI;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class EditingPage
{
    JFrame EditingFrame;
    public JPanel EditPanel;
    public JEditorPane MainEditor;
    private JPanel ButtonPanel;
    private JButton fontSizeButton;

    public EditingPage() {
        fontSizeButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                FontDialouge dialog = new FontDialouge();
                dialog.pack();
                dialog.setVisible(true);
            }
        });
    }
}

下面是字体对话框的代码:

package GUI;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class FontDialouge extends JDialog
{
    private JPanel contentPane;
    private JButton buttonOK;
    private JTextField FontSizeTextBox;

    public FontDialouge()
    {
        setContentPane(contentPane);
        setModal(true);
        getRootPane().setDefaultButton(buttonOK);

        buttonOK.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                onOK();
            }
        });
    }

    private void onOK()
    {
        String inputFontSize = FontSizeTextBox.getText();

        //Converting string to int
        try
        {
            int OutputFontSize = Integer.parseInt(inputFontSize);
            System.out.println("Successfully set the font!");
            EditingPage editingPage = new EditingPage();
            editingPage.MainEditor.setFont(new Font("JetBrains Mono", Font.PLAIN, OutputFontSize));
        }
        catch (NumberFormatException nfe)
        {
            JOptionPane.showMessageDialog(null, "Not a valid size !");
            System.out.println("ERROR! not a valid size! ERROR: " + nfe);
        }
    }

}

但由于某种原因,当我点击“确定”按钮时,它设置了字体,而且是一样的。我已经很长时间没有真正使用java了,如果这是一个非常基本的问题,那么很抱歉!如果你想要所有的src-bc,这里的数量还不够,那么这里有一个github页面。

zdwk9cvp

zdwk9cvp1#

in方法 onOK() ,在课堂上 FontDialouge ,您正在创建的新示例 EditingPage . 这与创建 FontDialouge . 您正在更改另一个文件的字体 EditPanel .
传递引用 EditPanelFontDialouge .

package GUI;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class FontDialouge extends JDialog
{
    private JPanel contentPane;
    private JButton buttonOK;
    private JTextField FontSizeTextBox;
    private JEditorPane editor; // ADDED THIS

    public FontDialouge(JEditorPane editor) // ADDED PARAMETER
    {
        this.editor = editor; // INITIALIZE CLASS MEMBER
        setContentPane(contentPane);
        setModal(true);
        getRootPane().setDefaultButton(buttonOK);

        buttonOK.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                onOK();
            }
        });
    }

    private void onOK()
    {
        String inputFontSize = FontSizeTextBox.getText();

        //Converting string to int
        try
        {
            int OutputFontSize = Integer.parseInt(inputFontSize);
            System.out.println("Successfully set the font!");
            editor.setFont(new Font("JetBrains Mono", Font.PLAIN, OutputFontSize));
        }
        catch (NumberFormatException nfe)
        {
            JOptionPane.showMessageDialog(null, "Not a valid size !");
            System.out.println("ERROR! not a valid size! ERROR: " + nfe);
        }
    }
}

在方法上 actionPerformed() ,在课堂上 EditingPage ,更改 FontDialouge 建造师。

public void actionPerformed(ActionEvent e) {
    FontDialouge dialog = new FontDialouge(MainEditor);
    dialog.pack();
    dialog.setVisible(true);
}

相关问题