TextArea文本样式在Java中不会从斜体变为纯文本

TextArea文本样式在Java中不会从斜体变为纯文本,java,swing,actionlistener,jtextarea,jradiobutton,Java,Swing,Actionlistener,Jtextarea,Jradiobutton,我有两个单选按钮为文本区域选择斜体或普通样式(它们被添加到按钮组中,因此只能选择一个) 我的actionPerformed方法如下所示 public void actionPerformed(ActionEvent ae) { Font currentFont = taText.getFont(); //taText is TextArea Font fontToSet; String command = ae.getActionCommand(); if (co

我有两个
单选按钮
文本区域
选择斜体或普通样式(它们被添加到按钮组中,因此只能选择一个)

我的actionPerformed方法如下所示

public void actionPerformed(ActionEvent ae) {
    Font currentFont = taText.getFont(); //taText is TextArea
    Font fontToSet;
    String command = ae.getActionCommand();
    if (command.equals("Italic")) {
        System.out.println("Italic clicked");
        fontToSet = new Font(currentFont.getFontName(),Font.ITALIC,currentFont.getSize());
    }
    else {
        System.out.println("Plain clicked");
        fontToSet = new Font(currentFont.getFontName(), Font.PLAIN, currentFont.getSize());
    }
    taText.setFont(fontToSet);
}
问题是,当我单击“Italic”时,文本将变为斜体,但当单击“Plain”时,文本不会变为纯文本。然而,消息
被简单点击
会显示在命令行上

问题出在哪里?

将代码更改为

public void actionPerformed(ActionEvent ae) {
    Font currentFont = taText.getFont(); //taText is TextArea
    Font fontToSet;
    String command = ae.getActionCommand();
    if (command.equals("Italic")) {
        System.out.println("Italic clicked");
        fontToSet =currentFont .deriveFont(Font.ITALIC);
    else {
        System.out.println("Plain clicked");
        fontToSet = currentFont .deriveFont(Font.PLAIN);
    }
    taText.setFont(fontToSet);
}
问题是,getFontName()调用Font2D以获取名称,并根据当前应用的样式返回值,但getName()仍将返回相同的字体名称。但最好使用deriveFont()

将代码更改为

public void actionPerformed(ActionEvent ae) {
    Font currentFont = taText.getFont(); //taText is TextArea
    Font fontToSet;
    String command = ae.getActionCommand();
    if (command.equals("Italic")) {
        System.out.println("Italic clicked");
        fontToSet =currentFont .deriveFont(Font.ITALIC);
    else {
        System.out.println("Plain clicked");
        fontToSet = currentFont .deriveFont(Font.PLAIN);
    }
    taText.setFont(fontToSet);
}

问题是,getFontName()调用Font2D以获取名称,并根据当前应用的样式返回值,但getName()仍将返回相同的字体名称。但最好使用deriveFont()

若要更快获得更好的帮助,请发布一个or。@AndrewThompson好的,我会这样做。若要更快获得更好的帮助,请发布一个or。@AndrewThompson好的,我会这样做