我已经阅读了几个教程,并想知道为什么我的JLabel没有生成图像?我以为我应该尽可能地显示图像。我的程序中的其他图形是否可能会干扰?是否有任何自上而下的图层系统java用于确定哪些图像在彼此之上?如果你有多个图像在彼此的顶部???
package scratch;
import java.awt.Font;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.Graphics;
import java.awt.Rectangle;
import javax.swing.JFrame;
import javax.swing.JLabel;
//import statements
//Check if window closes automatically. Otherwise add suitable code
public class okay extends JFrame {
JPanel jp = new JPanel();
JLabel jl = new JLabel();
public okay(){
jl.setIcon(new ImageIcon("C:\\Users\\ShawnK\\Desktop\\cat.png"));
jp.add(jl);
add(jp);
validate();
}
public static void main(String args[]) {
JFrame window = new JFrame();
okay t1 = new okay();
window.setSize(640,800);
window.setTitle("lets do this");
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );
window.setVisible(true);
drawingComponent DC = new drawingComponent();
ai enemy = new ai();
window.add(DC);
window.add(t1);
}
}
答案 0 :(得分:6)
你只是在创建一个简单的香草JFrame:
JFrame window = new JFrame();
并且您永远不会创建new okay()
对象。要知道它不会通过魔法创造自己,如果你想要它显示,你必须在代码中这样做。
顺便说一句,我在创作中不知道drawingComponent
是什么:
drawingComponent DC = new drawingComponent();
因为你从不显示类代码。此外,在添加所有组件之前,您不应将JFrame设置为可见。
setVisible(true)
。ImageIO.read(...)
将图像作为BufferedImage,然后将其放入ImageIcon。它更安全一些(我认为)可以更好地缓存图像。