java - Eclipse 中的二十一点背景图像

标签 java eclipse swing

我正在尝试将二十一点表设置为背景,因为我正在创建二十一点游戏。我不知道如何编写代码,blackjack3.gif 图像与 .java 文件一起位于 SRC 文件中。

当前代码:

`import java.awt.Graphics;
import java.awt.Image;

import javax.swing.ImageIcon;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.WindowConstants;

class MyCanvas extends JComponent {
    ImageIcon icon = new ImageIcon(this.getClass().getResource("blackjack3.gif").getImage());
    @Override
    protected void paintComponent(Graphics g) {
        // TODO Auto-generated method stub
        super.paintComponent(g);
        g.drawImage(icon.getImage(), 0, 0, getWidth(), getHeight(), null);
    }
}



public class BlackJack {

    public static void main(String args[]) {

    JFrame myFrame = new JFrame("BlackJack");
    // JLabel label = new JLabel(); 
    // ImageIcon icon = new ImageIcon(blackjack3.gif);

    MyCanvas canvas = new MyCanvas();
    myFrame.add(canvas);

    myFrame.setSize(1200,604);

    myFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

    myFrame.setVisible(true);
    }
}`

只是需要一些关于该怎么做的帮助。

最佳答案

the blackjack3.gif image is in the SRC file with the .java file.

它需要位于类路径上。所以这就是你的类文件所在的位置,而不是源文件。

或者您可以尝试使用ImageIO.read(...)来加载图像。如果无法加载文件,您将收到错误消息。

g.drawImage(icon.getImage(), 0, 0, getWidth(), getHeight(), null);

调用绘画方法时,可能图像尚未完全读取。

您应该使用:

g.drawImage(icon.getImage(), 0, 0, getWidth(), getHeight(), this); // note the "this"

图像完全加载后会通知组件重新绘制自身。

另外,请阅读 Swing 教程中关于 How to Use Icons 的部分。有关工作示例和加载图像的更好方法。

演示代码将向您展示如何更好地构建代码,以便在事件调度线程上创建 GUI,这一点很重要,因为所有 Swing 组件都应在 EDT 上创建/修改。

关于java - Eclipse 中的二十一点背景图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36433153/

相关文章:

java - 在构造函数中加载图像代码可以工作,相同的代码在按钮和文件选择器操作中不起作用?

java - JList 所选项目到字符串 - 奇怪的结果 : Donnees. Marques@3d5bac58

java - 你能在java控制台应用程序中拥有一个按键监听器吗?

java - Eclipse:将源代码文件夹导入其他项目

android - 无法调用 IResourceEventListener.resourceChangeEventEnd java.lang.StackOverflowError

java - 阻止 Eclipse 在清理时剪切代码行

java - 如何创建覆盖 Windows 标题栏的 Java Swing 应用程序?

java - 选择未填充从其他表映射的值的选项

java - ArrayList<String> 未设置最小容量

java - 如何在 xsd 文件中生成元素作为 jaxb 类