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