Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.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 图像上的形状??(爪哇)_Java_Image_Swing_Shape - Fatal编程技术网

Java 图像上的形状??(爪哇)

Java 图像上的形状??(爪哇),java,image,swing,shape,Java,Image,Swing,Shape,我正在尝试用Java编写一个棋盘游戏。 我的棋盘是图像,棋子是长方形。我希望棋盘是JFrame中的背景,棋子在棋盘上。我尝试过多次,但不是板覆盖了形状,就是只显示了形状。我可以将形状与图像连接起来,然后创建一个新图像,但这不是我想要的。有什么想法吗 public class Board extends JPanel { @Override public void paintComponent(Graphics g) { try { BufferedImage

我正在尝试用Java编写一个棋盘游戏。 我的棋盘是图像,棋子是长方形。我希望棋盘是JFrame中的背景,棋子在棋盘上。我尝试过多次,但不是板覆盖了形状,就是只显示了形状。我可以将形状与图像连接起来,然后创建一个新图像,但这不是我想要的。有什么想法吗

public class Board extends JPanel {
    @Override
    public void paintComponent(Graphics g) {
     try {
      BufferedImage img = ImageIO.read(new File("C:\\Users\\i\\Desktop\\j.png"));
      Graphics2D g2 = (Graphics2D) g;
      super.paintComponent(g);
      g.drawImage(img, 0, 0, null);
     }catch (IOException ex) {
           Logger.getLogger(Board.class.getName()).log(Level.SEVERE, null, ex);
     }
    }
}
还有我的另一节课

运动员的职业


不要在paintComponent内创建新图像。将其存储为一个字段并使用引用。您没有对Player执行任何操作,您希望它如何显示矩形?1为了更快地获得更好的帮助,请发布一个最小的完整可验证示例。2获取图像的一种方法例如,热链接到中看到的图像。3使用缩进代码行和代码块的逻辑和一致形式。缩进的目的是使代码的流程更易于遵循!
public class GameGUI extends javax.swing.JFrame {

    public GameGUI() {
        Board b=new Board();
        setContentPane(b);
        setSize(600,600);
        setTitle("gui");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setVisible(true);
                       }
     }
public class Player extends JPanel{
int xPos = 100, yPos = 100, vwidth = 100, vheight = 100;
Rectangle r = new Rectangle(xPos, yPos, vwidth, vheight);
public Player(){ .....}

@Override
    public void paintComponent(Graphics g) {
        Graphics2D g2 = (Graphics2D) g;
        super.paintComponent(g);
        g.setColor(Color.black);
         if (fill) {
            g.fillRect((int) r.getX(), (int) r.getY(), (int) r.getWidth(), (int) r.getHeight());
         }
         g2.draw(r);
}
}