当我取消JCheckBoxes时,如何做出动作响应?

时间:2016-02-05 23:02:59

标签: java user-interface textarea jcheckbox

我有一个带有粗体和斜体的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);
        }
    }

}

我也不知道如何检查两个方框是否都被检查以使文本既粗体又斜体,反对只有一个或另一个,所以任何有关如何做到这一点的建议将不胜感激,感谢

1 个答案:

答案 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
}