【发布时间】:2014-06-14 13:25:35
【问题描述】:
我已经为此苦苦挣扎了几个小时。我做了一周的 2D 游戏,遇到了一个让我发疯的问题(可能只是我自己)!当我插入图像时,它不显示。当我尝试绘制一个矩形时,它不显示。这是我的代码:
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
//import java.awt.Image;
//import javax.swing.ImageIcon;
public class SpaceInvaders {
// variables
static Board table;
public static void main(String[] args) {
createGui();
}
static void createGui(){
JFrame frame = new JFrame("Spane Invaders UK");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setPreferredSize(new Dimension(1000, 600));
table = new Board();
frame.add(table);
frame.pack();
frame.setVisible(true);
}
}
class Board extends JPanel{
//Image tank;
public Board(){
//ImageIcon ii = new ImageIcon(this.getClass().getResource("tank.png"));
//tank = ii.getImage();
}
public void painComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2d = (Graphics2D)g;
//g2d.drawImage(tank, 10, 10, null);
g2d.drawRect(50, 50, 10, 10);
}
}
可能有一个简单的解决方案,实际上非常简单,以至于在 Google 上找不到。尽管如此,我还是被困住了。为什么什么都没有发生?我该如何解决这个问题?
我注释掉了“图像”代码,因为这不是问题。
随意编辑。
【问题讨论】:
-
如果调整框架大小会发生什么?它有什么改变吗?不会自动触发重绘。
-
@aRestless ,你的意思是像在 frame.setVisible(true) 之后调用 board.repaint() 吗?这不会改变任何事情。
标签: java swing jpanel paintcomponent graphics2d