gpt4 book ai didi

java - 更改 Swing 组件的首选大小

转载 作者:行者123 更新时间:2023-12-03 21:38:17 26 4
gpt4 key购买 nike

我有一个 swing 组件,该组件的理想尺寸将根据当前显示的内容而变化(在本例中恰好是图像)。

我希望在内容更改时更改此首选大小,并且还允许更改布局(例如,如果组件在 JScrollPane 中使用,则滚动范围将更改以适应组件)。

在 Swing 中执行此操作的规范方法是什么?

最佳答案

建议:

  • 使用类扩展 JPanel(或 JComponent),
  • 给它一个 getPreferredSize() 方法重写,您可以在其中返回一个包含所需参数的 Dimension。
  • 例如,如果直径基于 BufferedImage,您可以使用如下内容:

getPreferredSize 示例:

public Dimension getPreferredSize() {
if (myBuffImg != null) {
return new Dimension(myBuffImg.getWidth(), myBuffImg.getHeight());
}
// default return value
return super.getPreferredSize();
}

编辑
关于您的评论:

how would you handle the case of the component's content image changing though? is it just a a case of triggering a re-layout in the surrounding container?

当然,您可以为此类提供一个setImage(Image image) 方法,并且您可以从该方法中repaint() 这个面板。我想该方法可以在这个 JPanel 的祖先上调用 revalidate() 导致这个组件被重新布局,但我不太喜欢这个类中的方法对其祖先有副作用并且认为调用 setImage(...) 方法的代码建议容器重新验证自身可能会更好。

关于java - 更改 Swing 组件的首选大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12549571/

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