Java I';我试图在ContentPane中的JPanel上绘制BuffereImage
所以我尝试在JPanel上制作动画(连续绘制不同的png图像文件),但是如果我运行这个JPanel,只有白色屏幕。 我正试图在JPanel上绘制BuffereImageJava I';我试图在ContentPane中的JPanel上绘制BuffereImage,java,swing,Java,Swing,所以我尝试在JPanel上制作动画(连续绘制不同的png图像文件),但是如果我运行这个JPanel,只有白色屏幕。 我正试图在JPanel上绘制BuffereImage public void run() { try { while (true) { if (GAME_STATE) { .................. } getContentPane
public void run() {
try {
while (true) {
if (GAME_STATE) {
..................
}
getContentPane().repaint();
getContentPane().revalidate();
Thread.sleep(GAME_SPEED);
}
} catch (Exception e) {
}
}
这是调用repaint()和revalidate()的run方法
这是一个我试图在其上绘制图像的类
public void Game_InterFace() {
JLabel Label_Menu_Board = new JLabel();
JLabel Label_AP_Board = new JLabel();
JLabel Label_Save_Board = new JLabel();
JLabel Label_Load_Board = new JLabel();
Panel_Game panel_Game = new Panel_Game();
panel_Game.addKeyListener(this);
.............................................
.............................................
panel_Game.add(btn_Menu);
panel_Game.add(btn_AP);
panel_Game.add(label_Status);
getContentPane().add(panel_Game);
getContentPane().repaint();
}
public Game_main() {
start();
setLocation(0, 0);
setUndecorated(true);
setSize(f_width, f_height);
setResizable(false);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container contentPane = getContentPane();
contentPane.setLayout(null);
Game_Home();
}
您应该重写
paintComponent()
,而不是paint()
。噢,谢谢!但还有其他问题吗?因为我试图用paintComponent替换,但它仍然不起作用……1)为了更快地获得更好的帮助,请发布一个或。3) while(true){
这不是在Swing GUI中执行动画的正确方法。而是使用Swing计时器调用repaint()
3)Java GUI必须在不同的操作系统、屏幕大小、屏幕分辨率等上工作。在不同的地区使用不同的PLAF。因此,它们不利于像素完美的布局。相反,使用布局管理器,或者使用布局填充和边框。很难说,因为我们不知道图像中有什么。请尝试减少程序(画一些简单的东西,而不是所有复杂的东西,等等)。另外,请注意Java语言惯例。变量和方法名称应该是小写(nameOfMethod
),并且不应该有下划线……例如。
public Game_main() {
start();
setLocation(0, 0);
setUndecorated(true);
setSize(f_width, f_height);
setResizable(false);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container contentPane = getContentPane();
contentPane.setLayout(null);
Game_Home();
}