早教吧作业答案频道 -->其他-->
初学者求助: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...的网友还看了以下:
关于二阶导数!二阶导数也很难,就是原函数导数的导数.二阶导数可以记作y‘‘=d^2y/dx^2即y' 2020-03-30 …
设有X只兔子Y只鸡1.X+Y=20兔子的数量是X=20-Y鸡的数量是Y=20-X(20-Y)x4+ 2020-04-07 …
f(x)=yx^2+x+y+xyf'x(x,y)=2xy+1+yf'y(x,y)=x^2+1+x我 2020-05-14 …
关于反函数的一个问题函数y=log2((1+x)/(1-x))的反函数为什么不是y=2^((1+x 2020-05-21 …
y=cosx的最小正周期和y=sinx的最小正周期是什么?y=cosx的最小正周期和y=sinx的 2020-06-07 …
坐标旋转公式看不懂X'=x*cos(n)+y*sin(n)Y'=-x*sin(n)+y*cos(n 2020-06-14 …
1.若集合M={y|y=x的平方+1},P={y|y=根号(x-1)},则MP的交集=?答案是{y 2020-07-30 …
1.若集合P={y|y=x^2+1,x属于R},Q={y|y=x+1,x属于R},则P交Q等于什么 2020-08-02 …
二阶导数~二阶导数也很难,就是原函数导数的导数.二阶导数可以记作y‘‘=d^2y/dx^2即y'' 2020-08-02 …
隐函数求导时比如e∧y对x求导为什么是(e∧y)×(y')为什么还要乘y'.还有对y∧2对x求导隐函 2020-12-26 …