gpt4 book ai didi

java - JLabel 上的 EmptyBorder 仅插入了应有内容的一半

转载 作者:行者123 更新时间:2023-12-02 11:55:56 25 4
gpt4 key购买 nike

我有一个 JFrame 和一个 ImageIcon 作为 JLabel,我希望它们完全脱离 JFrame。

代码:

JFrame frame = new JFrame("test");
frame.setSize(1000, 1000);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

try {
BufferedImage bf = ImageIO.read(new File(FILEPATH));
img = new JLabel(new ImageIcon(bf));
} catch (IOException e) {
e.printStackTrace();
}

frame.getContentPane().add(img);
img.setBorder(new EmptyBorder(0, frame.getContentPane().getWidth(), 0, 0));

此代码仅使 JLabel/图像显示在屏幕的一半之外。我可以通过将 EmptyBorder 的左侧参数设置为 frame.getContentPane.getWidth() * 2 来轻松修复它,但我只是想知道为什么它似乎会剪切插图距离减半。根据我的测试,如果 JLabel 包含 ImageIcon,则只会将其减半。如果它包含文本,则插图将按其应有的方式工作。我只测试了文本和 ImageIcon。

最佳答案

不确定确切的计算方式,但默认情况下图标位于可用空间的中心。

正如您所注意到的,当仅显示图标时,图标似乎向左移动了图标大小的一半。

如果您同时有图标和文本(或只有文本),则不会发生这种情况。

一种解决方案是:

img = new JLabel(new ImageIcon(bf), SwingConstants.LEFT);

关于java - JLabel 上的 EmptyBorder 仅插入了应有内容的一半,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47604198/

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