首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将JToggleButton ImageIcon居中

将JToggleButton ImageIcon居中
EN

Stack Overflow用户
提问于 2012-11-17 21:32:06
回答 2查看 1.7K关注 0票数 2

我已经创建了一个JToggleButton,当它被选中时,图像就会显示出来。这一切都很完美,除了图像不在按钮上居中。图像的左上角位于按钮的中心点,然后图像向下向按钮的右下角移动。

代码语言:javascript
运行
复制
JToggleButton LayoutButton = new JToggleButton();
LayoutButton.setIcon(new ImageIcon());
LayoutButton.setSelectedIcon(new ImageIcon("Image.png"));

你知道我怎么把图像居中吗?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-17 21:57:24

问题是,您的初始图像与所选图像的尺寸不匹配,因此,所选图像将出现在不同的位置,在这种情况下,右下角。

您可以为初始的“未选中”图像创建一个占位符:

代码语言:javascript
运行
复制
public class PlaceHolderIcon implements Icon {

    private final int width;
    private final int height;

    public PlaceHolderIcon(int width, int height) {
        this.width = width;
        this.height = height;
    }

    public int getIconHeight() {
        return height;
    }

    public int getIconWidth() {
        return width;
    }

    public void paintIcon(Component c, Graphics g, int x, int y) {
    }
}

并将您的第一个零维图像替换为:

代码语言:javascript
运行
复制
ImageIcon selectedIcon = new ImageIcon("Image.png");
Image image = selectedIcon.getImage();
PlaceHolderIcon placeHolderIcon = new PlaceHolderIcon(image.getWidth(this), image.getHeight(this));
JToggleButton layoutButton = new JToggleButton();
layoutButton.setIcon(placeHolderIcon);
layoutButton.setFocusPainted(false);
layoutButton.setSelectedIcon(selectedIcon);
票数 3
EN

Stack Overflow用户

发布于 2012-11-17 21:43:58

您应该使用JToggleButton (实际上是AbstractButton的)的setHorizontalAlignment(...)setVerticalAlignment(...)方法。将SwingConstants.CENTER作为参数传入,使全部居中。

但请注意,horizontalAlignment和verticalAlignment属性的默认值已经是SwingConstants.CENTER。因此,如果这不起作用,请考虑发布一个小型的可编译和可运行的程序,该程序使用网络上随时可用的图像来向我们展示您的问题,sscce以及您当前按钮的外观图像。

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

https://stackoverflow.com/questions/13431037

复制
相关文章

相似问题

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