gpt4 book ai didi

java - JPanel 缩放时不显示背景图片

转载 作者:行者123 更新时间:2023-12-01 05:14:47 24 4
gpt4 key购买 nike

我试图在 JPanel 上设置一个随面板调整大小的背景图像。我显示图片没有问题,但是一旦我使用:

背景 = background.getScaledInstance(300, -1, Image.SCALE_SMOOTH );

没有显示任何内容。关于原因有什么想法吗?

代码:

import javax.swing.*;
import java.awt.*;

public class LoginJPanel extends JPanel
{
private Image background;

public LoginJPanel()
{
super();

background = new ImageIcon("C:\\ASYS\\Stories\\Authentication UI\\AVDsplashscreen_tiny.jpg").getImage();
}

@Override
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
background = background.getScaledInstance(300, -1, Image.SCALE_SMOOTH );
g.drawImage(background, 0, 0, this);
}

public static void main (String[] args)
{
LoginJPanel ip = new LoginJPanel();
JFrame jf = new JFrame ();
jf.setLayout (new BorderLayout ());
jf.add (ip, BorderLayout.CENTER);
jf.setSize (1000, 600);
jf.setLocation (150, 150);
jf.setVisible (true);
jf.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
}
}

最佳答案

最后我所做的是(正如评论所建议的)将缩放移到绘制方法之外。我创建了一个从父组件调用的公共(public)方法,以通知面板新的尺寸,并根据该尺寸缩放图片:

 public void initSize(int _width, int _height)
{
int h = background.getHeight(null);
int w = background.getWidth(null);

if (w - _width > h - _height)
{
scaleVertically(_width, _height);
}
else
{
scaleHorizontally(_width, _height);
}
}

我想我应该在某个监听器上执行此操作,因为这不是很优雅,但我不知道该怎么做。

关于java - JPanel 缩放时不显示背景图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11433181/

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