我已经看过很多其他问题,其中人们遇到的问题与我在这里遇到的问题(大多数解决方案都是由简单的错误找到)但我不能为我的生活做好准备为什么我的图形不能在我的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();
}
}
答案 0 :(得分:2)
评论frame.setLayout(null);
,你很可能会看到游戏。
JFrame
的默认布局目前为BorderLayout
BorderLayout
且没有约束的对象默认为CENTER
。CENTER
BorderLayout
中的一个对象被拉伸到可用的高度和高度。frame.setSize(800,600);
可用宽度和高度比框架装饰少800x600像素。更好的全方位方法是:
getPreferredSize()
以返回合理的值。