我创建了一个JToggleButton,当它被选中时,会显示图像。除了图像不以按钮为中心外,一切都很完美。图像的左上角位于按钮的中心点,然后图像向下并朝向按钮的右下角。
JToggleButton LayoutButton = new JToggleButton();
LayoutButton.setIcon(new ImageIcon());
LayoutButton.setSelectedIcon(new ImageIcon("Image.png"));
我是如何将图像居中的?
由于
答案 0 :(得分:3)
问题是您的初始图像与所选图像的尺寸不匹配,因此,在这种情况下,所选图像将显示在不同的位置,右下角。
您可以为初始的“未选定”图片创建占位符:
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);
答案 1 :(得分:1)
您应该使用JToggleButton的setHorizontalAlignment(...)
和setVerticalAlignment(...)
方法(实际上是AbstractButton)。将SwingConstants.CENTER
作为参数传递给所有人。
虽然请注意,horizontalAlignment和verticalAlignment属性的默认值已经是SwingConstants.CENTER。因此,如果这没有帮助,请考虑发布一个小的可编辑和可运行的程序,该程序使用现有的网络图像向我们展示您的问题,sscce以及发布当前按钮的图像等。