Java图形在计时器中不工作
我正在用java编写一个小游戏。为此,我想打印一个对话框,其中包含一些文本,以便与游戏中的人交谈Java图形在计时器中不工作,java,animation,graphics,timer,paint,Java,Animation,Graphics,Timer,Paint,我正在用java编写一个小游戏。为此,我想打印一个对话框,其中包含一些文本,以便与游戏中的人交谈 public static void printConBox(Graphics g, String firstLine, String secondLine, String thirdLine, String fourthLine){ g.setColor(Color.WHITE); g.fillRect(x, y, 600, 180); g.setColor(Col
public static void printConBox(Graphics g, String firstLine, String secondLine, String thirdLine, String fourthLine){
g.setColor(Color.WHITE);
g.fillRect(x, y, 600, 180);
g.setColor(Color.BLACK);
Timer timer = new Timer();
timer.schedule(new TimerTask(){
@Override
public void run() {
if(i <= firstLine.length() - 1){
char c = firstLine.charAt(i);
i++;
String s = "" + c;
System.out.print(s);
g.drawString(s, xdif, y + 25);
xdif += 15;
}else{
timer.cancel();
}
}
}, 0, 100);}
publicstaticvoidprintconbox(图形g、字符串第一行、字符串第二行、字符串第三行、字符串第四行){
g、 setColor(Color.WHITE);
g、 fillRect(x,y,600,180);
g、 设置颜色(颜色为黑色);
定时器=新定时器();
timer.schedule(新TimerTask(){
@凌驾
公开募捐{
如果(ipublic void actionPerformed(ActionEvent e){
if(Conversation.ipublic void actionPerformed(ActionEvent e){
if(Conversation.i)图形对象仅在接收它的paint方法的持续时间内有效。您不能“保存”它以供以后在延迟计时器任务中使用。计时器必须更改相关数据,然后通知组件重新绘制(部分)本身。请注意,由于线程问题,在使用AWT和swing时,最好使用javax.swing.Timer而不是java.util.Timer。好的,谢谢,我会尝试一下…:)图形对象仅在接收它的paint方法期间有效。您不能“保存”它供以后在延迟计时器任务中使用。计时器必须更改相关数据,然后告诉组件重新绘制(部分)自身。请注意,在处理AWT和swing时,最好使用javax.swing.timer而不是java.util.timer,因为线程问题。好的,谢谢,我将尝试它…:)我解决了它:)特别感谢VGR,这是一个很大的帮助。如果有人想看到解决方案,请在这里添加评论…我解决了:)特别感谢VGR,这是一个很大的帮助。如果有人想看到解决方案,请在这里添加评论。。。
public void actionPerformed(ActionEvent e){
if(Conversation.i <= firstLine.length() - 1){
char c = firstLine.charAt(Conversation.i);
Conversation.i++;
String s = "" + c;
System.out.print(s);
g.drawString(s, Conversation.xdif, Conversation.y + 25);
Conversation.xdif += 15;
Conversation.timer.restart();
}else{
Conversation.timer.stop();
}
}