簡體   English   中英

JPanel在paint()方法后面渲染

[英]JPanel rendered behind the paint() method

我正在嘗試創建一個棋盤游戲。 我的窗戶的左側是我的實際棋盤游戲,而在右側我將有幾個按鈕和計時器。 我使用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);

這是我的代碼,描繪了go board圖像。 這是我的董事會課程

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

這是我在運行期間的游戲,並進一步解釋了我的問題。 http://imgur.com/cAIS9aR

提前感謝您的幫助!

我正在嘗試創建一個棋盤游戲。 我的窗戶的左側是我的實際棋盤游戲,而在右側我將有幾個按鈕和計時器。

創建兩個面板,一個用於Board類,另一個用於按鈕,然后將它們添加到框架中,如下所示:

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

那就是不要試圖在一個面板上進行自定義繪畫和游戲。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM