이것은 처음으로 스윙 그래픽을 사용하므로 나와 함께 곰. 나의 현재 목표는 내가 사용하고있는 이미지의 방향을 바꾸기 위해 화살표 키 중 하나를 누를 때 텍스처가 변하는 것이다. 이 작업에서 페인트 메서드를 만들었고 화살표 키를 누를 때 repaint();
을 사용하여 호출하려고합니다. 나는 또한 그것에 따라 그림을 바꿀 수 있도록 페인트 할 매개 변수가 있다고 생각하고있었습니다. 내 페인트 메서드를 호출하여 조치 할 수 있도록 repaint();
를 호출 할 등 내 개인 정적 클래스 모든 KeyListener에서는repaint();를 올바르게 사용하는 방법; Java에서
//startGame.java
//Version 1.0
//09/06/2016
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
public class Main extends JFrame
{
public static void main(String[] args)
{
final JFrame frame = new JFrame("Display Mode");
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setUndecorated(true);
frame.pack();
frame.setVisible(true);
frame.addKeyListener(new KeyInput());
}
private static class KeyInput implements KeyListener
{
public void keyPressed(KeyEvent ke)
{
if(ke.getKeyCode() == KeyEvent.VK_ESCAPE)
{
System.exit(0);
}
if(ke.getKeyCode() == KeyEvent.VK_RIGHT)
{
//repaint();
}
/*if(ke.getKeyCOde() == KeyEvent.VK_LEFT)
{
} */
}
public void keyTyped(KeyEvent ke)
{}
public void keyReleased(KeyEvent ke)
{}
}
@Override
public void paint(Graphics g)
{
super.paint(g);
ImageIcon player = new ImageIcon("RealPlayersV2.png");
image = player.getImage();
Graphics2D g2d = (Graphics2D) g;
g2d.drawImage(image, 187, 245, this);
}
}
: 여기
는 내가 현재 가지고 코드입니다. 불행히도repaint();
은 mykeylistener 메서드와 같은 정적 메서드에서 호출 할 수 없습니다. keypress에
repaint();
을 사용하는 우아한 해결책이 있습니까? 감사!
그래서? 내부의'KeyInput' 클래스를 정적으로 만들지 마십시오. 다른 컨텍스트에서 재사용 할 수있는 것과는 다릅니다. 어쨌든 비공개입니다. –
KeyInput은 정적 인 main 메소드에서 참조되므로 정적이어야합니다. – JackaJacka