Java 如何在netbeans中切换JPanel?

Java 如何在netbeans中切换JPanel?,java,swing,netbeans,Java,Swing,Netbeans,我正在做一个乒乓球游戏,游戏在左边的jpanel窗口中运行。我在右边添加了另一个jpanel窗口,这样用户就可以重新设置游戏,并决定一场胜利需要多少积分 无论如何,当我与左侧面板(非游戏面板)上的按钮交互时,我无法再次选择游戏屏幕,游戏停止响应。我正在使用netbeans,而且我是一名初学者,因此非常感谢您的帮助 下面是问题的图片,然后用键盘控制游戏。它一直在运行,但当我按下按钮时不再响应键盘。 我还添加了一些代码 public class LeikGluggi extends javax.sw

我正在做一个乒乓球游戏,游戏在左边的jpanel窗口中运行。我在右边添加了另一个jpanel窗口,这样用户就可以重新设置游戏,并决定一场胜利需要多少积分

无论如何,当我与左侧面板(非游戏面板)上的按钮交互时,我无法再次选择游戏屏幕,游戏停止响应。我正在使用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();

    }
-


}

创建新线程,在该线程中设置对象的动画并让其休眠一段时间,可能您阻塞了太多的ui线程,而您的应用程序只是停止响应,请确保更新ui的任何操作都在该线程上处理

从该线程更改对象的位置并使用

我只是在这里处理没有响应的问题,我没有看到你的jbutton代码。
注意-编辑你的答案,我看不出你在这里问什么,请尝试在代码示例中使用英语,至少是一些注释。

你能添加一些代码吗?请创建并添加一些代码并包括屏幕截图,谢谢!
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)
{
}