gpt4 book ai didi

java - 无法显示 ImageIcon

转载 作者:行者123 更新时间:2023-11-30 08:52:01 26 4
gpt4 key购买 nike

我已经研究了很多其他问题,其中人们遇到的问题与我在这里遇到的问题类似(大多数解决方案都是通过简单的错误找到的),但我终究无法弄清楚为什么我的图形不会t 显示在我的 jframe 中。我是 Java Graphics 的新手,所以我很感激能得到的所有帮助。 (如果有人认为这是一个重复的问题,我只要求你等我得到答案后再关闭它)

哦,另外,当我运行程序时,它告诉我重绘方法被调用了,如果这在某种程度上有帮助的话

package game.try5;

import java.awt.Dimension;
import java.net.URL;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Window {

public Window() {
JFrame frame = new JFrame("Epic Game");
frame.setSize(800,600);
frame.setLocationRelativeTo(null);
frame.setLayout(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

GamePanel panel = new GamePanel();
frame.add(panel);

frame.setVisible(true);
}

public static void main(String[] args){
Window window = new Window();
}
}

.

package game.try5;

import java.awt.Graphics;

import javax.swing.JPanel;

public class GamePanel extends JPanel{
GameObject go = new GameObject(0,0,false,"Dog.jpg");

public GamePanel(){
repaint();
System.out.println("Repaint method called");
}
public void paintComponent(Graphics g){
super.paintComponent(g);
g.drawImage(go.getImg().getImage(), go.getxLoc(), go.getyLoc(), 50, 50, null);
System.out.println("Graphics method called");
}
}

.

package game.try5;

import java.awt.Dimension;
import java.net.URL;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Window {

public Window() {
JFrame frame = new JFrame("Epic Game");
frame.setSize(800,600);
frame.setLocationRelativeTo(null);
frame.setLayout(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

GamePanel panel = new GamePanel();
frame.add(panel);

frame.setVisible(true);
}

public static void main(String[] args){
Window window = new Window();
}
}

最佳答案

注释掉 frame.setLayout(null);,您很可能会看到游戏。

  1. JFrame 的默认布局目前是 BorderLayout
  2. 在没有约束的情况下添加到 BorderLayout 的对象默认为 CENTER
  3. BorderLayoutCENTER 中的对象被拉伸(stretch)到可用的宽度和高度。
  4. 由于代码调用了 frame.setSize(800,600);,可用宽度和高度为 800x600 像素减去框架装饰。

更好的全面方法是:

  1. 让自定义绘制组件覆盖 getPreferredSize() 以返回一个合理的值。
  2. 将组件添加到容器中。
  3. 最后,打包顶层窗口。这将使框架成为显示内容所需的最小尺寸。

关于java - 无法显示 ImageIcon,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30328871/

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