gpt4 book ai didi

java - PaintComponent 代码不起作用

转载 作者:行者123 更新时间:2023-12-01 20:03:48 26 4
gpt4 key购买 nike

我是 Swing 新手,正在尝试将图像背景添加到我的 JFrame 中。但是我的 paintComponent 方法不起作用。您能否就如何修复我的代码以便在背景中绘制图像提供一些建议?

代码如下:

// all necessary imports have been added.
public class Menu extends JFrame {
private Image backgroundImage;
private JFrame frame;

public static void main(String[] args) throws IOException {
Menu window = new Menu();
window.frame.setVisible(true);
}

public Menu() throws IOException {
initialize();
}

public void initialize() throws IOException {

frame = new JFrame();
frame.setBounds(100, 100, 312, 294);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);

}
public void paintComponent(Graphics g) throws IOException {
backgroundImage = ImageIO.read(new File("P:\\Profiles\\workspace\\Games\\Images\\matrix.jpg"));
g.drawImage(backgroundImage, 0, 0, null);

}
}

最佳答案

重写 JFramepaintComponent 没有用,请重写其内容 Pane 的 paintComponent

扩展 JFrame 通常也没有必要。

最后,最好使用 initialize 加载图像(而不是在每次绘制调用时加载),并在需要时在内容面板上执行操作。

将所有内容放在一起,请参阅此示例:

public class Menu extends JPanel {

private Image backgroundImage;

public static void main(final String[] args) throws IOException {
Menu menu = new Menu();
JFrame frame = new JFrame();
frame.setContentPane(menu);
frame.setBounds(100, 100, 312, 294);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}

public Menu() throws IOException {
initialize();
}

public void initialize() throws IOException {

backgroundImage = ImageIO.read(new File("P:\\Profiles\\workspace\\Games\\Images\\matrix.jpg"));

}

@Override
public void paintComponent(final Graphics g){

super.paintComponent(g);
g.drawImage(backgroundImage, 0, 0, this);

}

}

关于java - PaintComponent 代码不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47691920/

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