【问题标题】:Image Over Image Java图像上的图像 Java
【发布时间】:2013-07-21 18:03:16
【问题描述】:

基本上在这段代码中,问题是当我运行它时,名为 Aaron 的角色没有出现。只有他的用户名可以。

package Java;

import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.*;

public class javagame extends JFrame {

    private Image dbImage;
    private Graphics dbg;
    Image face;
    Image backround;

    //Briggs
    int xbn, ybn;
    int xo, yo;

    //Aaron
    int x, y;
    int xan, yan;

    Font font = new Font ("Arial", Font.BOLD, 20);

    public class AL extends KeyAdapter {

        public void keyPressed (KeyEvent e) {

            int keyCode = e.getKeyCode();
            if(keyCode == e.VK_LEFT) {

                    x+= -10;
                    xan+= -10;
            }
            if(keyCode == e.VK_A) {
                    xo+= -10;
                    xbn+= -10;
            }
            if(keyCode == e.VK_RIGHT) {
                    x += +10;
                    xan+= +10;
            }
            if(keyCode == e.VK_D) {
                    xo += +10;
                    xbn += +10;
            }
            if(keyCode == e.VK_UP) {
                    y += -10;
                    yan += -10;
            }
            if(keyCode == e.VK_W) {
                    yo += -10;
                    ybn += -10;
            }
            if(keyCode == e.VK_DOWN) {
                    y += +10;
                    yan += +10;
            }
            if(keyCode == e.VK_S) {
                    yo += +10;
                    ybn += +10;
            }
        }
        public void keyReleased (KeyEvent e) {
        }
    }

    public javagame() {
        //load Images
        ImageIcon ia = new ImageIcon("C:/Users/Douger/Desktop/eclipse/Java Game/src/Java/Square buddy.png");
        face = ia.getImage();

        ImageIcon iback = new ImageIcon("C:/Users/Douger/Desktop/eclipse/Java Game/src/Java/a javagame backround 1.png");
        backround = iback.getImage();

        //Game properties
        addKeyListener(new AL());
        setTitle("A Ball's Adventure");
        setSize(750, 750);
        setResizable(false);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBackground(Color.green);
        setLocationRelativeTo(null);

        //Aaron
        x = 250;
        y = 250;

        xan = 230;
        yan = 250;

        //Briggs

        xo = 300;
        yo = 300;

        xbn = 280;
        ybn = 300;
    }

    public void paint(Graphics g) {
        dbImage = createImage(getWidth(), getHeight());
        dbg = dbImage.getGraphics();
        paintComponent (dbg);
        g.drawImage(dbImage, 0, 0, this);

    }

    public void paintComponent (Graphics g){
        g.drawImage(backround, 0, 0, this.getWidth(), this.getHeight(), this);
        g.setColor(Color.white);
        g.setFont(font);

        g.drawString("Copy Right All rights reserved to Aaron Collins 2013-2013", 100, 100);

        g.drawLine(100, 105, 640, 105);

        g.setColor(Color.blue);
        g.fillRect(xo, yo, 10, 10);

        g.setColor(Color.black);
        g.drawString("Aaron", xan, yan);

        g.setColor(Color.black);
        g.drawString("Briggs", xbn, ybn);

        //g.drawImage(face, x, y, 50, 50, this);
        g.setColor(Color.blue);
        g.fillRect(x, y, 10, 10);

        repaint();
    }

    public static void main(String[] args) {
        new javagame();
    }
}

【问题讨论】:

  • “P.S. 有人请给我解释一下关于超级的事情。”这是一个完全不同的问题,应该在一个完全不同的问题上提出。
  • 1) 源代码中的一个空白行总是就足够了。 2) 对于 Swing,通常在基于 AWT 的较低级别 KeyListener 上使用键绑定。有关如何使用它们的详细信息,请参阅How to Use Key Bindings。 3) @Override 符号添加到应该改变行为的方法中,以检查签名是否正确。
  • swing 添加了标签,因为这与问题相关。 eclipse 标签被移除,因为这没有。
  • 关于您的代码:1) 永远不要直接在 JFrame 中绘制。 2)调试复杂的东西时,先尝试将问题隔离在单独的小程序中。首先看看您是否可以从磁盘读取图像文件并将其显示在 JOptionPane 中,这应该需要 20 行或更少的代码。完成后,尝试在 JPanel 的 paintComponent(...) 方法中绘制它,然后尝试动画,然后尝试键绑定。一次走一步效果最好。
  • 您是否实施了我第一条评论第 3 部分中的建议?这应该表明出了什么问题..

标签: java image swing


【解决方案1】:

选项:

  • 您可以使用JLayeredPanes 并将文字重叠在图片上
  • 对于 PNG 图像,透明度可能是答案

试试这些,如果不起作用,请尝试回复我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-25
    • 2010-11-07
    • 1970-01-01
    • 1970-01-01
    • 2016-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多