我有一个带有粗体和斜体的JCheckBox以及textarea的GUI。我的GUI的布局很好,但我的JCheckBox项目的功能是错误的。它们应该将textarea中的任何文本转换为粗体,斜体或两者,具体取决于勾选的框。我设法做到这一点,以便在最初勾选粗体按钮时将文本更改为粗体,但是当我取消选择它时它仍保持粗体,对于我的斜体按钮也是如此。这是我的粗体按钮的动作监听器的实现,我的斜体按钮使用相同的想法:
class Bold implements ActionListener {
private final FontSetter fontSetter;
private final JTextArea textarea;
private final Font font;
private final Font font1;
JCheckBox bold = new JCheckBox("Bold");
Bold(FontSetter fontSetter, JTextArea textarea) {
this.fontSetter = fontSetter;
this.textarea = textarea;
this.font = new Font(textarea.getText(), Font.BOLD, 12);
this.font1 = new Font(textarea.getText(), Font.PLAIN, 12);
}
public void actionPerformed(ActionEvent e) {
if (bold.isSelected() == false) {
fontSetter.setBold();
textarea.setFont(font);
}
else {
textarea.setFont(font1);
}
}
}
我也不知道如何检查两个方框是否都被检查以使文本既粗体又斜体,反对只有一个或另一个,所以任何有关如何做到这一点的建议将不胜感激,感谢
答案 0 :(得分:1)
没有直接经验,但要使用粗体和斜体字体,您需要按如下方式设置Font构造函数:new Font("",Font.BOLD | Font .ITALIC,12)。您执行的操作逻辑已关闭。您需要引用此类中的两个复选框
private JCheckBox _cbBold;
private JCheckBox _cbItalic;
public void actionPerformed(ActionEvent e) {
int fontStyle = (_cbBold.isSelected ? Font.BOLD : 0) | (_cbItalic.isSelected ? Font.ITALIC : 0);
Font f = new Font("text area from text", fontStyle, 12);
//set font on textarea
}