Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPanel在paint()方法后面渲染_Java_Swing_Panel_Frame_Paint - Fatal编程技术网

Java JPanel在paint()方法后面渲染

Java JPanel在paint()方法后面渲染,java,swing,panel,frame,paint,Java,Swing,Panel,Frame,Paint,我正在尝试创建一个棋盘游戏。我的窗口的左边是我真正的棋盘游戏,而在右边我有几个按钮和计时器。我使用paint方法绘制电路板,但当我尝试创建在背景中渲染的新JPanel时。我知道,因为我可以看到游戏边缘有一些黑色 这是我创建JFrame并调用board类的主代码 frame.setSize(864, 480); frame.add(new Board()); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

我正在尝试创建一个棋盘游戏。我的窗口的左边是我真正的棋盘游戏,而在右边我有几个按钮和计时器。我使用paint方法绘制电路板,但当我尝试创建在背景中渲染的新JPanel时。我知道,因为我可以看到游戏边缘有一些黑色

这是我创建JFrame并调用board类的主代码

    frame.setSize(864, 480);
    frame.add(new Board());
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
    frame.setResizable(false);
    frame.setLocationRelativeTo(null);
    frame.setCursor(frame.getToolkit().createCustomCursor(new BufferedImage(3, 3, BufferedImage.TYPE_INT_ARGB), new Point(0, 0), "null"));

    JPanel panel = new JPanel();
    frame.add(panel);
    panel.setBackground(Color.BLACK);
这是我绘制围棋板图像的代码。这是我的董事会课

super.paint(g);
    s.location = MouseInfo.getPointerInfo();
    s.mouse = s.location.getLocation();
    s.updateBlackX(s.mouse);
    s.updateBlackY(s.mouse);
    s.updateWhiteX(s.mouse);
    s.updateWhiteY(s.mouse);
    Graphics2D g2d = (Graphics2D) g;
    g2d.drawImage(board, 0, 0, null);
    paintArray(g2d);
    if (turn == 1)
        g2d.drawImage(s.getBlackStone(), s.getBlackX() - f.getX() - 15, s.getBlackY() - f.getY() - 35, null);
    else
        g2d.drawImage(s.getWhiteStone(), s.getWhiteX() - f.getX() - 15, s.getWhiteY() - f.getY() - 35, null);
这是我在运行时的游戏,并对我的问题作了进一步解释。

提前感谢您的帮助

我正在尝试创建一个棋盘游戏。我的窗口的左边是我真正的棋盘游戏,而在右边我有几个按钮和计时器

创建两个面板,一个用于Board类,另一个用于按钮,然后将它们添加到框架中,如下所示:

frame.add(gamePanel, BorderLayout.CENTER);
frame.add(buttonPanel, BorderLayout.EAST);

也就是说,不要试图在一个面板上完成所有自定义绘制和游戏。

我的游戏板没有面板,我使用awt绘制。我将我的董事会添加到我的框架中。@camickr建议的方法值得追求;这里显示了一个相关示例。@user2457344如何使用
paint
。听起来你在滥用油漆工艺。此外,您不应该使用
MouseInfo.getPointerInfo()
,因为它返回的是相对于屏幕的点,而不是相对于组件的点。相反,您应该使用
MouseListener