我对使用java编码(以及一般编码)非常陌生。我目前正在学校读11年级的CS,但我们所涵盖的一切都非常简单。
为了我们的高潮,我试图制作乒乓球。我意识到我必须使用JPanel来做我想做的事情,但是我们之前只使用过Console,所以我用0知识进入这个。
无论如何,我在使用已经宣布的JPanel时遇到了麻烦。关于如何在JPanel中绘制的每个解决方案或教程包括使用完全不同的类,我不知道如何将其实现到我预先存在的代码中;那是......
import javax.swing.*;
import javax.swing.JFrame;
import java.awt.event.*;
import java.awt.*;
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;
public class pong extends JPanel {
private JFrame f3, f2, f1;
private JPanel pLabel, pButton, pPong1, pPong2;
private JButton b1, b2;
private JLabel lab, score;
int singleScore = 0;
int doubleScore1 = 0;
int doubleScore2 = 0;
int By;
int Bx;
int Paddle1y;
int Paddle2y;
public pong()
{
gui();
}
public void gui()
{
f1 = new JFrame("Pong!");
f1.setVisible(true);
f1.setSize(700, 500);
f1.setResizable(false);
f1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pButton = new JPanel();
pButton.setBackground(Color.BLACK);
pLabel = new JPanel();
pLabel.setBackground(Color.WHITE);
b1 = new JButton("1 Player");
b1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
pong1();
}
});
b2 = new JButton("2 Players");
b2.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
pong2();
}
});
lab = new JLabel("Welcome to Pong!");
pButton.add(b1);
pButton.add(b2);
pLabel.add(lab);
f1.add(pButton, BorderLayout.SOUTH);
f1.add(pLabel, BorderLayout.CENTER);
}
public void pong1()
{
f1.dispose();
f2 = new JFrame("One Player Pong");
f2.setVisible(true);
f2.setSize(700, 500);
f2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f2.setResizable(false);
pPong1 = new JPanel();
pPong1.setVisible(true);
pPong1.setBackground(Color.WHITE);
score = new JLabel("Score = " + singleScore);
f2.add(pPong1);
pPong1.add(score, BorderLayout.NORTH);
}
public void pong2()
{
f1.dispose();
f3 = new JFrame("Two Player Pong");
f3.setVisible(true);
f3.setSize(700, 500);
f3.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f3.setResizable(false);
pPong2 = new JPanel();
pPong2.setVisible(true);
pPong2.setBackground(Color.WHITE);
score = new JLabel("Player 1 Score = " + doubleScore1 + " Player 2 Score = " + doubleScore2);
f3.add(pPong2);
pPong2.add(score, BorderLayout.NORTH);
}
public static void main(String[] args)
{
new pong();
}
}
无论如何,您可以给予我的任何帮助表示赞赏。提前谢谢。
答案 0 :(得分:2)
您覆盖paintComponent()
以绘制内容,并在您想要更新显示时使用repaint()
来调用它。 Graphics
课程中的方法可以为您提供帮助,例如Graphics.drawLine()
,Graphics.fillRect()
等。