试图制作乒乓球,我差不多完成了。我设置好了当玩家获得5分时,另一个JFrame打开。在那个JFrame上,有两个按钮;一个人再次上场,一个人打开一个记分牌(最近三场比赛的记录)。出于某种原因,我无法通过按钮打开记分牌。愿意帮助找出问题所在。
import java.awt.Graphics;
import javax.swing.JPanel;
import javax.swing.JFrame;
public class scoreBoard extends JPanel {
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawLine(0, 50, 200, 50);
g.drawLine(0, 100, 200, 100);
g.drawLine(0, 150, 200, 150);
g.drawLine(95, 0, 95, 230);
g.drawString("PLAYER 1", 15, 30);
g.drawString("PLAYER 2", 115, 30);
g.drawString(String.valueOf(gameOver.Score[0][0]), 15, 80);
g.drawString(String.valueOf(gameOver.Score[0][1]), 115, 80);
g.drawString(String.valueOf(gameOver.Score[1][0]), 15, 130);
g.drawString(String.valueOf(gameOver.Score[1][1]), 115, 130);
g.drawString(String.valueOf(gameOver.Score[2][0]), 15, 180);
g.drawString(String.valueOf(gameOver.Score[2][1]), 115, 180);
}
public static void main(String[] args) {
scoreBoard board = new scoreBoard();
JFrame boardFrame = new JFrame("Score Board");
boardFrame.setSize(200, 230);
boardFrame.setVisible(true);
boardFrame.setResizable(false);
boardFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
boardFrame.add(board);
}
}
这是我在记分牌上的课程。
scores = new JButton("Recent Scores");
scores.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
scoreBoard board = new scoreBoard();
}
});
这是我打开记分板的ActionListener。
提前致谢。
答案 0 :(得分:1)
首先,类名应以大写字母开头,因此您的类应为ScoreBoard
。
public class ScoreBoard extends JPanel {
您的Scoreboard
课程是JPanel
ScoreBoard board = new ScoreBoard();
您的actionListener代码只是创建一个面板。除非将其添加到窗口,否则无法显示面板。
您应该在JDialog(而不是JFrame)中显示记分板。
基本代码是:
scoreBoard board = new scoreBoard();
JDialog dialog = new JDialog();
dialog.add( board );
dialog.pack();
dialog.setVisible( true );
基本上,main()方法中的代码需要添加到ActionListener中,除了使用JDialog而不是JFrame。您也可以使用DISPOSE_ON_CLOSE
代替EXIT_ON_CLOSE
。
答案 1 :(得分:0)
我假设您没有使用此主要功能,而是从另一个主程序(包含您的按钮的主程序)启动您的程序。
当你运行一个程序(假设你使用IDE,比如Eclipse)时,只执行一个主函数,因此,这个 main不会。
将所有代码从main移动到actionPerformed()方法。
请注意,这不是最佳解决方案,因为每次按下按钮都会创建一个新的JFrame。更好的方法是显示/隐藏一个JFrame。