我有两个 RadioButton
来为 TextArea
选择斜体或纯色样式。(它们被添加到 ButtonGroup 中,因此只能选择一个)
我的 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);
}
问题是,当我单击“斜体”时,文本变为斜体,但单击“普通”时,文本不会变为普通。然而消息 Plain Clicked
却显示在命令行上。
问题是什么?
最佳答案
将代码更改为
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();
关于java - Java 中 TextArea 文本样式不会从斜体更改为纯文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39435860/