我有两个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);
}
问题是,当我点击“Italic”时,文本变为斜体,但是当单击“Plain”时,文本不会变为普通文本。然而,消息Plain Clicked
显示在命令行上。
有什么问题?
答案 0 :(得分:2)
将您的代码更改为
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();