java-在具有不断重新绘制的JPanel的JApplet中使用组件
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-在具有不断重新绘制的JPanel的JApplet中使用组件,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2908字,纯文字阅读大概需要5分钟。
内容图文
![java-在具有不断重新绘制的JPanel的JApplet中使用组件](/upload/InfoBanner/zyjiaocheng/656/0e01f88c84374c34982ace746dac191f.jpg)
我在做这个学校作业时遇到了主要问题;幸运的是我很早就开始了.我们被要求使用JApplet制作儿童数学游戏.到现在为止还挺好.我设法创建了一个JPanel,然后将其添加到JApplet中并保存所有图形(JPanel的内容不断被重绘).但是,每当我尝试将JLabel之类的Swing组件添加到JApplet内容窗格时,它都不会显示或显示不存在的迹象.我对JApplets完全陌生,因此,如果显而易见,请不要太苛刻.
下面是代码:
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JApplet;
import javax.swing.JPanel;
import javax.swing.Timer;
public class CountingSheep extends JApplet
{
final int BOARDWIDTH = 800;
final int BOARDHEIGHT = 500;
final int SCREENWIDTH = 800;
final int SCREENHEIGHT = 800;
Dimension boardDim = new Dimension(BOARDWIDTH, BOARDHEIGHT);
Dimension screenDim = new Dimension(SCREENWIDTH, SCREENHEIGHT);
Graphics bufferGraphics;
Image offScreen;
Image backgroundImage;
Image[] sheepImage = new Image[2];
JPanel gameBoard = new JPanel(true);
List<Sheep> sheepArray = new ArrayList<>();
Timer myTimer;
public void init()
{
loadImages();
initScreen();
initBufferGraphics();
initBoard();
initTimer();
sheepArray.add(new Sheep(sheepImage));
myTimer.start();
}
private void loadImages()
{
sheepImage[0] = getImage(getDocumentBase(), "sheep.png");
sheepImage[1] = getImage(getDocumentBase(), "sheep2.png");
backgroundImage = getImage(getDocumentBase(), "bg.jpg");
}
private void initScreen()
{
setSize(800, 600);
setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));
}
private void initBoard()
{
gameBoard.setPreferredSize(new Dimension(BOARDWIDTH, BOARDHEIGHT));
getContentPane().add(gameBoard);
}
private void initBufferGraphics()
{
offScreen = createImage(BOARDWIDTH, BOARDHEIGHT);
bufferGraphics = offScreen.getGraphics();
}
private void initTimer()
{
myTimer = new Timer(80, new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
timerTick(e);
}
});
}
private void timerTick(ActionEvent e)
{
repaint();
}
public void paint(Graphics g)
{
bufferGraphics.clearRect(0, 0, BOARDWIDTH, BOARDHEIGHT);
bufferGraphics.drawImage(backgroundImage, 0, 0, null);
drawSheepHerd();
moveSheepHerd();
gameBoard.getGraphics().drawImage(offScreen, 0, 0, this);
}
public void drawSheepHerd()
{
for (Sheep s : sheepArray)
{
s.draw(bufferGraphics);
}
}
public void moveSheepHerd()
{
for (Sheep s : sheepArray)
{
s.move();
}
}
}
在此先感谢您,希望大家能弄清楚,因为我很沮丧.
解决方法:
总结一下我的一些建议:
>创建您自己的ContentPane类,该类扩展了JPanel,覆盖paintComponent(…)并绘制背景图像并显示动画.
>通过init方法在JApplet上调用setContentPane(…),以传入此类的对象.
>试用ContentPane的不同布局和位置.
>确保paintComponent(Graphics g)方法的第一行是:super.paintComponent(g),以便每次绘制时都会重置您的图形.
>默认情况下,JPanel是不透明的,您应该保留它不变,因为contentPanes必须是不透明的.如果您在contentPane顶部添加组件,并且想要查看添加的组件后面的图像,则可能必须使它们不透明.
内容总结
以上是互联网集市为您收集整理的java-在具有不断重新绘制的JPanel的JApplet中使用组件全部内容,希望文章能够帮你解决java-在具有不断重新绘制的JPanel的JApplet中使用组件所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。