【发布时间】:2015-03-28 05:17:33
【问题描述】:
我的目标是使用箭头键一次将剪切区域移动 10 个像素。我在面板上得到了图像,剪切区域也在那里,但问题是剪切区域不会移动。这是我的代码,我希望了解它有什么问题。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class clipping_area extends JFrame{
clipping_area(){
setTitle("OpenChallenge");
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(500,500);
add(new panelOC());
}
class panelOC extends JPanel{
int xAxis=0;
int yAxis=0;
public void paintComponent(Graphics g){
super.paintComponent(g);
Image img=(new ImageIcon("images/image1.jpg")).getImage();
g.setClip(100+10*xAxis,100+10*yAxis,50,50);
g.drawImage(img,0,0,getWidth(),getHeight(),this);
}
panelOC(){
requestFocus();
addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent KE){
if(KE.getKeyCode()==KeyEvent.VK_UP){
yAxis-=1;
repaint();
}
else if(KE.getKeyCode()==KeyEvent.VK_DOWN){
yAxis+=1;
repaint();
}
else if(KE.getKeyCode()==KeyEvent.VK_LEFT){
xAxis-=1;
repaint();
}
else if(KE.getKeyCode()==KeyEvent.VK_RIGHT){
xAxis+=1;
repaint();
}
}
});
}
}
public static void main(String[] args){
new clipping_area();
}
}
【问题讨论】:
-
欢迎来到Java,你不妨阅读一下Code Conventions for the Java TM Programming Language,它会让人们更容易阅读你的代码,也让你更容易阅读其他人
-
不要从任何
paint方法中加载资源,绘制方法应该是绘制,这样加载资源可能会减慢绘制过程
标签: java swing keylistener clipping