java - JPanel 在 Paint() 方法后面渲染

标签 java swing panel frame paint

我正在尝试创建一款棋盘游戏。我的窗口的左侧是我实际的棋盘游戏,而右侧我将有一些按钮和计时器。我使用 Paint 方法绘制我的板,但是当我尝试创建一个在后台渲染的新 JPanel 时。我知道,因为我可以看到游戏边缘有一些黑色。

这是我的主要代码,用于创建 JFrame 并调用我的板类。

    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);

这是我绘制棋盘图像的代码。这是我的 Board 类(class)

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);

这是我在运行时的游戏,并进一步解释了我的问题。 /image/GNuy7.jpg

预先感谢您提供的所有帮助!

最佳答案

I am trying to create a board game. The left side of my windows is my actual board game while on the right side I was going to have a few buttons and timers.

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

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

这就是不要尝试在单个面板上完成所有自定义绘画和游戏。

关于java - JPanel 在 Paint() 方法后面渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16949607/

相关文章:

java - JFrame Action 监听器在相同/链接的 JPanel Action 监听器之前激活

.net - 图片框面板闪烁

r - 如何在 R 中从两个 data.frames 创建一个(不平衡)面板?

javascript - 如何使用 data-dismiss 关闭 Bootstrap 面板?

Java 日期时间格式化程序

java - BufferedReader 循环中出现错误

java - JAXB和Hibernate3非法访问的问题

java - 获取 java 图像的堆空间问题

java - JTable 选择的单元格多于单击的单元格

java - 在文本字段中同时输入时无法更新文本区域