gpt4 book ai didi

java - 图像仅在原始边界内绘制

转载 作者:行者123 更新时间:2023-12-01 07:21:59 27 4
gpt4 key购买 nike

我想在 JFrame 中对多个 jpg 进行动画处理,我将向您展示一些摘录:

我的扩展 JFrame 的类构造函数

super(title);
setLayout(null);
setResizable(false);
setSize(Settings.windowWidth, Settings.windowHeight);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);

我的类构造函数扩展了 JPanel

i = new ImageIcon(image).getImage();
setSize(i.getWidth(this),i.getHeight(this));
setBounds(x, y, i.getWidth(this), i.getHeight(this));

重写的方法

@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(i, getX(), getY(), null);
}

是的,我知道空布局并不可取,但除非您对绝对定位有更好的想法,否则我现在会坚持使用它。

上面的代码确实从 (x,y) 开始绘制图像,但不是完全绘制。对于 50 和 100,它显示如下:

enter image description here

这差不多了:它只从 0,0 开始在 256x256 盒子(图像尺寸)内绘制图像,无论它被重新定位到哪里。

有什么建议、帮助、解决方案、建议吗?如果您需要更多代码,请问我,只是不想将所有内容都放在这里;)

最佳答案

无需自定义绘画:

  1. 将 ImageIcon 添加到 JLabel 并将 JLabel 添加到 JPanel
  2. 当您想要为面板添加动画效果时,请更改标签在面板上的位置。

或者,如果您进行自定义绘画,则不需要空布局。

  1. 您重写 JPanel 的 getPreferredSize() 方法并将面板添加到框架中。
  2. 然后,在 paintComponent() 方法中,您可以在您设置的首选尺寸范围内绘制图像。

关于java - 图像仅在原始边界内绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34210146/

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