我正在尝试将二十一点表设置为背景,因为我正在创建二十一点游戏。我不知道如何编写代码,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/