早教吧作业答案频道 -->其他-->
初学者求助:currentImage.paintIcon(this,page,x,y)中的this是什么意思?是引用还是什么?这是整个程序.importjava.awt.*;importjavax.swing.*;importjava.awt.event.*;publicclassDirectionPanelextendsJPanel{privatefinalintwid
题目详情
初学者求助:currentImage.paintIcon(this,page,x,y)中的this是什么意思?是引用还是什么?
这是整个程序.
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class DirectionPanel extends JPanel {
private final int width=300,height=200,jump=10,image_size=31;
private ImageIcon up,down,right,left,currentImage;
private int x,y;
public DirectionPanel()
{
addKeyListener(new DirectionListener());
x=width/2;
y=height/2;
up=new ImageIcon("up.jpg");
down=new ImageIcon("down.jpg");
left=new ImageIcon("left.jpg");
right=new ImageIcon("right.jpg");
currentImage=right;
setBackground(Color.black);
setPreferredSize(new Dimension(width,height));
setFocusable(true);
}
public void paintComponent(Graphics page)
{
super.paintComponent(page);
currentImage.paintIcon(this,page,x,y);
}
private class DirectionListener implements KeyListener
{
public void keyPressed(KeyEvent event)
{
switch(event.getKeyCode())
{
case KeyEvent.VK_UP:
currentImage=up;
y-=jump;
break;
case KeyEvent.VK_DOWN:
currentImage=down;
y+=jump;
break;
case KeyEvent.VK_LEFT:
currentImage=left;
x-=jump;
break;
case KeyEvent.VK_RIGHT:
currentImage=right;
x+=jump;
break;
}
repaint();
}
public void keyTyped(KeyEvent event){}
public void keyReleased(KeyEvent event){}
}
}
这是整个程序.
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class DirectionPanel extends JPanel {
private final int width=300,height=200,jump=10,image_size=31;
private ImageIcon up,down,right,left,currentImage;
private int x,y;
public DirectionPanel()
{
addKeyListener(new DirectionListener());
x=width/2;
y=height/2;
up=new ImageIcon("up.jpg");
down=new ImageIcon("down.jpg");
left=new ImageIcon("left.jpg");
right=new ImageIcon("right.jpg");
currentImage=right;
setBackground(Color.black);
setPreferredSize(new Dimension(width,height));
setFocusable(true);
}
public void paintComponent(Graphics page)
{
super.paintComponent(page);
currentImage.paintIcon(this,page,x,y);
}
private class DirectionListener implements KeyListener
{
public void keyPressed(KeyEvent event)
{
switch(event.getKeyCode())
{
case KeyEvent.VK_UP:
currentImage=up;
y-=jump;
break;
case KeyEvent.VK_DOWN:
currentImage=down;
y+=jump;
break;
case KeyEvent.VK_LEFT:
currentImage=left;
x-=jump;
break;
case KeyEvent.VK_RIGHT:
currentImage=right;
x+=jump;
break;
}
repaint();
}
public void keyTyped(KeyEvent event){}
public void keyReleased(KeyEvent event){}
}
}
▼优质解答
答案和解析
this代表的就是类本身,也就是DirectionPanel
调用的函数currentImage.paintIcon 需要paint的目标(通俗点说就是将icon刷在哪里)
所以这里将panel自己作为参数传过去
调用的函数currentImage.paintIcon 需要paint的目标(通俗点说就是将icon刷在哪里)
所以这里将panel自己作为参数传过去
看了初学者求助:currentIm...的网友还看了以下:
besupposedtobedoing到底要怎么用?比如说:I'msupposedtobedoin 2020-04-26 …
有首经典英文歌,歌词大概是爱动望呢快艘爱.什么什么的手机铃声用这首歌的特别多,不是我没听清楚歌词, 2020-05-14 …
Iwishyou,还是I'mwishyou?为什么 2020-06-07 …
是I'maSuperman还是I'mSuperman,为什么? 2020-06-12 …
我想去令人放松的地方翻译成英语是I‘dliketogosomewhererelaxing为什么不是 2020-06-17 …
i=0;if(a1==1){i=i+1;}if(a2==3){i=i+1;}if(a3==3){i 2020-07-09 …
I'lldiscussitwithyouwheneveryoulike.为什么不是I'lldisc 2020-07-19 …
我准备去上学和我准备回家用Begoingto造句~英语!比如:i'mgoingtogotoscho 2020-07-20 …
c自加自减问题我晕了#includemain(){inti,x,y;i=2;x=(++i)+(i++ 2020-11-01 …
初学者求助:currentImage.paintIcon(this,page,x,y)中的this是 2020-11-11 …