私は左側のjpanelウィンドウでゲームを動かすポンゲームを作っています。私は右の別のjpanelウィンドウを追加しました。ユーザーはゲームをリセットして勝利に必要なポイント数を決定することができました。ネットビーンのjPanels間の切り替え方法は?
とにかく、左のパネル(ゲームパネルではない)のボタンとやり取りすると、ゲーム画面を再び選択することができず、ゲームが応答しなくなります。私はnetbeansを使用しているので、私は初心者ですので、どんな助けもありがとう!
ここに問題の写真があり、ゲームはキーボードで制御されます。それは実行し続けますが、ボタンを押すとキーボードに応答しなくなります。 私のコードもいくつか追加しました。
public class LeikGluggi extends javax.swing.JPanel implements ActionListener, KeyListener {
int HRADISPADA = 10;
Spilari1 spilari1;
Spilari2 spilari2;
Bolti bolti;
public static int stadaLeiks = 0; //0 = stop, 1 = pása, 2 = spila
public LeikGluggi() {
initComponents();
spilari1 = new Spilari1();
spilari2 = new Spilari2();
bolti = new Bolti();
setSize(Leikbord.GLUGGI_BREIDD,Leikbord.GLUGGI_HAED);
this.addKeyListener(this); //látum vita þegar ýtt er á takka
this.setFocusable(true); //virkar bara þegar glugginn er valinn
Timer klukka = new Timer(30, this);
klukka.start();
}
-
private void uppfaera()
{
spilari1.uppfaera();
spilari2.uppfaera();
bolti.uppfaera();
bolti.markCheck();
bolti.skoppCheck(spilari1, spilari2);
}
public void resetLeik()
{
}
@Override
public void paintComponent(Graphics g)
{
g.setColor(Color.BLUE);
spilari1.paint(g);
spilari2.paint(g);
bolti.paint(g); //bolti teiknaður
if(stadaLeiks == 0)
{
g.setColor(Color.BLACK);
g.setFont(new Font("Consolas", Font.PLAIN, 30));
g.drawString("Ýttu á bilstöng til að byrja", 50, 200);
}
if(stadaLeiks == 1)
{
g.setColor(Color.BLACK);
g.setFont(new Font("Consolas", Font.PLAIN, 80));
g.drawString("PÁSA", 210, 250);
}
}
@Override
public void actionPerformed(ActionEvent e)
{
//þegar timer tikkar þá actinPerformed keyrt
if(stadaLeiks == 2)
{
uppfaera();
}
repaint();
}
//Spaði hreyfður ef ýtt er á takka
@Override
public void keyPressed(KeyEvent e)
{
if(e.getKeyCode() == KeyEvent.VK_P)
{
if (stadaLeiks != 2)
stadaLeiks = 2;
else stadaLeiks = 1;
}
if (e.getKeyCode() == KeyEvent.VK_W)
{
spilari1.setyHradi(-HRADISPADA);
}
if (e.getKeyCode() == KeyEvent.VK_UP)
{
spilari2.setyHradi(-HRADISPADA);
}
if (e.getKeyCode() == KeyEvent.VK_S)
{
spilari1.setyHradi(HRADISPADA);
}
if (e.getKeyCode() == KeyEvent.VK_DOWN)
{
spilari2.setyHradi(HRADISPADA);
}
}
@Override
public void keyReleased(KeyEvent e)
{
if (e.getKeyCode() == KeyEvent.VK_W || e.getKeyCode() == KeyEvent.VK_S)
{
spilari1.setyHradi(0);
}
if (e.getKeyCode() == KeyEvent.VK_UP || e.getKeyCode() == KeyEvent.VK_DOWN)
{
spilari2.setyHradi(0);
}
}
public void keyTyped(KeyEvent e)
{
}
}
コードを追加できますか? –
[最小、完全、および検証可能な例](http://stackoverflow.com/help/mcve)を作成してください – stjepano
いくつかのコードを追加し、スクリーンショットも追加しました。ありがとうございます! – snjall