gpt4 book ai didi

java - 使用paint方法创建类的对象

转载 作者:行者123 更新时间:2023-12-01 15:17:39 27 4
gpt4 key购买 nike

我创建了一个菜单,其中包含一些可供选择的选项。这些选项之一是“用计算机玩”,它会启动游戏。

        JButton ai = new JButton("Play with computer");
ai.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
GameBoard play = new GameBoard();
hi.dispose(); //jframe
}
});

然后是游戏板:

@SuppressWarnings("serial")
public class GameBoard extends Canvas {
private Image dbi;
private Graphics db;
private JFrame okno;
Rectangle aiPaddle = new Rectangle(10, 590, 10, 50);
Rectangle pPaddle = new Rectangle(10, 100, 10, 50);
Rectangle ball = new Rectangle(560, 10, 10, 10);
Player p = new Player(this);
Ai a = new Ai(this);
Ball b = new Ball(this);
GameBoard() {
okno = new JFrame();
okno.setTitle("Pink Ponk");
okno.setSize(600, 300);
okno.getContentPane().setBackground(Color.black);
okno.setResizable(false);
okno.setVisible(true);
okno.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
addKeyListener(p);
}

public static void main(String[] args) {
GameBoard gra = new GameBoard();
gra.okno.add(gra);
}

@Override
public void update(Graphics g) {
dbi = createImage(10, 50);
db = dbi.getGraphics();
paint(db);
g.clearRect(0, 0, 600, 300);
g.setColor(Color.white);
g.drawRect(p.getX(), p.getY(), 10, 50);
g.fillRect(p.getX(), p.getY(), 10, 50);
g.drawOval(b.getX(), b.getY(), 10, 10);
g.fillOval(b.getX(), b.getY(), 10, 10);
g.drawRect(a.getX(), a.getY(), 10, 50);
g.fillRect(a.getX(), a.getY(), 10, 50);
}

@Override
public void paint(Graphics g) {
pPaddle = new Rectangle(p.getX(), p.getY(), 10, 50);
aiPaddle = new Rectangle(a.getX(), a.getY(), 10, 50);
ball = new Rectangle(b.getX(), b.getY(), 10, 10);
g.clearRect(0, 0, 600, 300);
g.setColor(Color.white);
g.drawRect(p.getX(), p.getY(), 10, 50);
g.fillRect(p.getX(), p.getY(), 10, 50);
g.drawOval(b.getX(), b.getY(), 10, 10);
g.fillOval(b.getX(), b.getY(), 10, 10);
g.drawRect(a.getX(), a.getY(), 10, 50);
g.fillRect(a.getX(), a.getY(), 10, 50);
}

}

我确信它应该有效,但事实并非如此。我遇到黑屏,没有任何矩形或椭圆形。其他类(class)的线程正在工作,因为我仍然输掉了比赛。 :)

最佳答案

GameBoard 构造函数是按下开始按钮时调用的唯一函数,它创建一个新框架,设置其背景并使其可见。但它不会向框架添加任何组件。您可能需要添加

okno.add(this);

请注意,尽管如此,显示框架并将其自身添加到该框架实际上并不是 Canvas 构造函数的责任。我会将框架创建移到构造函数之外。让构造函数做它应该做的事情:构造对象。

关于java - 使用paint方法创建类的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11412057/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com