gpt4 book ai didi

java - GridLayout 中的单元格内容居中

转载 作者:行者123 更新时间:2023-12-02 08:31:21 27 4
gpt4 key购买 nike

我有一个带有 GridLayout(1, 3) 的面板,但我想集中此布局中单元格的内容(不添加面板):

public MainMenu() {
setLayout(new GridLayout(1, 3));

setBorder(BorderFactory.createLineBorder(Color.BLUE));
setOpaque(false);


ImageComponent img = new ImageComponent("resources/music.png", true, this);
add(img);
ImageComponent img1 = new ImageComponent("resources/video.png", true, this);
add(img1);
ImageComponent img2 = new ImageComponent("resources/audio", true, this);
add(img2);


}

因为如果我只是将这 3 个 ImageComponent 添加到 MainMenu,它们就会向上显示。

最佳答案

GridLayout 将调整所有组件的大小以填充可用空间。因此,如果 3 个 ImageComponent 的尺寸分别为 50x50、50x50 和 75x75,那么它们的大小都将变为 75x75。从那里开始,ImageComponent 如何绘制自己就取决于它了。

很可能 ImageComponent 实现了 PaintComponent ,如下所示:

protected void paintComponent(Graphics g) {
g.drawImage(image, 0, 0, this);
}

这会将图像绘制在左上角,而不是居中。

这将绘制居中图像:

protected void paintComponent(Graphics g)
{
super.paintComponent(g);
int iw = image.getWidth(this);
int ih = image.getHeight(this);

if (iw != -1 && ih != -1)
{
int w = getWidth();
int h = getHeight();
g.drawImage(image, (w -iw)/2, (h-ih)/2, this);
}
}

关于java - GridLayout 中的单元格内容居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3268183/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com