こんにちは私は、矢印キーをクリックしてpaintComponentに描かれた家に別の物語を追加し、矢印キーをクリックして削除します。しかし、私はKeyListenerに関する問題があり、私はこのコードについて何が修正されているのか理解していません。KeyListenerを通してペイントを変更するには?
import javax.swing.JComponent; import javax.swing.JFrame;
メインビューアー・クラス
public class HouseViewer {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setSize(700, 700);
frame.setTitle("Cool house program");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JComponent component = new HouseComponent();
frame.add(component);
frame.setVisible(true);
}
}
Componentクラス
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import javax.swing.JComponent;
import java.awt.event.KeyListener;
public class HouseComponent extends JComponent implements KeyListener {
private boolean more;
private boolean less;
private boolean def;
public HouseComponent(){
def = true;
this.addKeyListener(this);
}
public void paintComponent(Graphics g){
if (def) {
// Default
// 1st rectangle
g.drawRect(230, 180, 200, 200);
// roof
g.drawLine(230, 180, 330, 100);
g.drawLine(430, 180, 330, 100);
// door and window
g.drawRect(260, 280, 50, 100);
g.drawRect(350, 310, 45, 45);
}
if(more) {
// roof
g.drawLine(230, 180, 330, 45);
g.drawLine(430, 180, 330, 45);
// 2nd story rectangle
g.drawRect(230, 180, 200, 100);
// 1st rectangle
g.drawRect(230, 180 + 100, 200, 200);
// door and window
g.drawRect(260, 280 + 100, 50, 100);
g.drawRect(350, 310 + 100, 45, 45);
}
if (less) {
// 1st rectangle
g.drawRect(230, 180, 200, 200);
// roof
g.drawLine(230, 180, 330, 100);
g.drawLine(430, 180, 330, 100);
// door and window
g.drawRect(260, 280, 50, 100);
g.drawRect(350, 310, 45, 45);
}
}
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
switch(key)
{
case KeyEvent.VK_UP:
more = true;
less = false;
def = false;
repaint();
case KeyEvent.VK_DOWN:
more = false;
less = true;
repaint();
}
}
public void keyReleased(KeyEvent e) {
}
public void keyTyped(KeyEvent e) {
}
}
問題は何ですか? –
私はキーイベントが家の絵を変える方法を知らない。 – Darknax
それぞれの 'case'の終わりに'; 'を追加する。 – Berger