Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将JToggleButton图像图标居中_Java_Swing_Alignment_Imageicon_Jtogglebutton - Fatal编程技术网

Java 将JToggleButton图像图标居中

Java 将JToggleButton图像图标居中,java,swing,alignment,imageicon,jtogglebutton,Java,Swing,Alignment,Imageicon,Jtogglebutton,我已经创建了一个JToggleButton,当它被选中时,图像就会显示出来。除了图像不在按钮的中心外,一切都很好。图像的左上角位于按钮的中心点,然后图像向下并朝着按钮的右下角向外移动 JToggleButton LayoutButton = new JToggleButton(); LayoutButton.setIcon(new ImageIcon()); LayoutButton.setSelectedIcon(new ImageIcon("Image.png")); 你知道我该怎么把图像

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

JToggleButton LayoutButton = new JToggleButton();
LayoutButton.setIcon(new ImageIcon());
LayoutButton.setSelectedIcon(new ImageIcon("Image.png"));
你知道我该怎么把图像居中吗


谢谢您应该使用JToggleButton的
设置水平对齐(…)
设置垂直对齐(…)
方法(实际上是的)。将
SwingConstants.CENTER
in作为参数传递给所有人


但是请注意,水平对齐和垂直对齐特性的默认值已经是SwingConstants.CENTER。因此,如果这没有帮助,考虑发布一个小的可编译和可运行的程序,使用网络中的图像可以方便地向我们展示您的问题,以及发布当前按钮的外观图像。

< P>您应该使用<代码> SthySigOrthAlnt对齐(…)>代码>和<代码> Set VistalAc对齐(…)JToggleButton的方法(实际上是)。将
SwingConstants.CENTER
in作为参数传递给所有人


但是请注意,水平对齐和垂直对齐特性的默认值已经是SwingConstants.CENTER。因此,如果这没有帮助,考虑发布一个小的可编译和可运行的程序,使用网络中的图像可以方便地向我们展示您的问题,以及发布当前按钮的样子。

< P>问题是,您的初始图像与选定图像的尺寸不匹配,因此,所选图像将显示在不同的位置,在本例中为右下角

您可以为初始“未选定”图像创建占位符:

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) {
    }
}
并将第一张零维图像替换为:

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);

问题是您的初始图像与所选图像的尺寸不匹配,因此,所选图像将显示在不同的位置,在本例中为右下角

您可以为初始“未选定”图像创建占位符:

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) {
    }
}
并将第一张零维图像替换为:

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);

感谢您对sscce的建议。我没有未选中的图像,因此当它添加选中的图像时,它没有将其居中。如果我为“未选定”添加图像,则该图像会正常工作。必须与图像大小从未选择更改为已选择有关。感谢您对sscce的建议。我没有未选中的图像,因此当它添加选中的图像时,它没有将其居中。如果我为“未选定”添加图像,则该图像会正常工作。必须与图像大小从未选择更改为已选择有关。谢谢。我刚刚发现了这个!谢谢你解释这个问题fix@Reimeus快速跟进问题。当按钮对焦时,是否可以删除占位符图像周围显示的边框?谢谢。我刚刚发现了这个!谢谢你解释这个问题fix@Reimeus快速跟进问题。当按钮具有焦点时,是否可以删除占位符图像周围显示的边框?