首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >缩放JCheckBox盒

缩放JCheckBox盒
EN

Stack Overflow用户
提问于 2014-03-27 14:55:13
回答 1查看 4.3K关注 0票数 1

我想缩放一个JCheckBox,例如,与其设置的文本字体大小相等。例如,当我增加Font大小时,复选框本身保持较小,但它应该随文本而增长,或者我希望自己设置框的大小:

代码语言:javascript
复制
JCheckBox chckbxTest = new JCheckBox("Test");
chckbxTest.setFont("Arial", Font.BOLD, 27));

如果可能的话,我需要JRadioButton的相同功能。不幸的是,我还没有找到任何关于这个功能的文档。

解决方案:

标记的答案帮助我创建了一个完全可伸缩的自己样式的JCheckbox。下面的示例在选中时绘制一个由另一个矩形填充的简单矩形:

代码语言:javascript
复制
    [...]
     JCheckBox myCheckBox = new JCheckBox("Test");
     myCheckBox.setIcon(new SimpleCheckboxStyle(20));
    [...]

class SimpleCheckboxStyle implements Icon {

    int dim = 10;

    public SimpleCheckboxStyle (int dimension){
        this.dim = dimension;
    }

    protected int getDimension() {
        return dim;
    }

    public void paintIcon(Component component, Graphics g, int x, int y) {
        ButtonModel buttonModel = ((AbstractButton) component).getModel();

        int y_offset = (int) (component.getSize().getHeight() / 2) - (int) (getDimension() / 2);
        int x_offset = 2;

        if (buttonModel.isRollover()) {
            g.setColor(new Color(0, 60, 120));
        } else if (buttonModel.isRollover()) {
            g.setColor(Color.BLACK);
        } else {
            g.setColor(Color.DARK_GRAY);
        }
        g.fillRect(x_offset, y_offset, fontsize, fontsize);
        if (buttonModel.isPressed()) {
            g.setColor(Color.GRAY);
        } else if (buttonModel.isRollover()) {
            g.setColor(new Color(240, 240, 250));
        } else {
            g.setColor(Color.WHITE);
        }
        g.fillRect(1 + x_offset, y_offset + 1, fontsize - 2, fontsize - 2);
        if (buttonModel.isSelected()) {
            int r_x = 1;
            g.setColor(Color.GRAY);
            g.fillRect(x_offset + r_x + 3, y_offset + 3 + r_x, fontsize - (7 + r_x), fontsize - (7 + r_x));
        }
    }

    public int getIconWidth() {
        return getDimension();
    }

    public int getIconHeight() {
        return getDimension();
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-27 17:13:14

例如,当我增加字体大小时,复选框本身保持较小,但它应该随文本而增长,或者我希望自己设置框的大小

然后,您需要为文本的字体大小提供自定义图标。见以下方法:

代码语言:javascript
复制
setIcon(....)
setSelectedIcon(...)

对于一个JRadioButton,您也需要这样做。此外,您将需要为每个LAF不同的图标。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22691353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档