Java 为什么我的JLabel不生成图像?
我看了几本教程,想知道为什么我的JLabel没有生成图像?我想我已经准备好了展示图像所需的一切。我的程序中的其他图形是否可能存在干扰?如果有多个图像在彼此的顶部,java是否使用自上而下的层系统来确定哪些图像在彼此的顶部Java 为什么我的JLabel不生成图像?,java,swing,jframe,Java,Swing,Jframe,我看了几本教程,想知道为什么我的JLabel没有生成图像?我想我已经准备好了展示图像所需的一切。我的程序中的其他图形是否可能存在干扰?如果有多个图像在彼此的顶部,java是否使用自上而下的层系统来确定哪些图像在彼此的顶部 package scratch; import java.awt.Font; import javax.swing.*; import javax.swing.event.*; import java.awt.*; import java.awt.event.*; impor
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);
}
}
您只是创建了一个普通的框架:
JFrame window = new JFrame();
而且您永远不会创建一个新的ok()
对象。要明白,它不会通过魔法自行创建,如果您想让它显示出来,就必须用代码来实现
顺便说一句,我不知道什么是drawingComponent
:
drawingComponent DC = new drawingComponent();
因为你从不显示类代码。此外,在添加所有组件之前,不应将JFrame设置为可见
同时
- 学习并遵循Java命名约定,因为这样做有助于其他人(我们!!)更好地理解您的代码。变量名都应该以小写字母开头,而类名应该以大写字母开头
- 避免扩展JFrame。虽然这对于像这样的琐碎程序来说是可以的,但它不能很好地扩展,这意味着它会使代码变得更复杂,甚至在稍大或更复杂的程序中,它会把你画在角落里李>
- 相反,让您的GUI面向创建JPanel,如果需要,可以将面板放置在JFrames中,或者JDialogs、JOptionPanes或其他JPanel中。这将使您的代码具有更大的灵活性
- 同样,在添加所有初始组件之前,不要在JFrame上调用
setVisible(true)
- 是的,您最好使用
将图像作为缓冲区获取图像,然后将其放入您的图像图标中。它更安全,并且(我认为)允许更好地缓存图像ImageIO.read(…)
setVisible(true)
?为什么要创建它和一个单独的JFrame?摆脱JFrame,单独使用okay对象。将其指定给变量,然后将其设置为可见。另外,您的Java命名方案(类名以小写字母开头)表明,虽然您可能已经阅读了一些Swing教程,但还没有阅读一些Java教程的介绍,这是一种倒退。首先从基础开始,因为它们是Swing和所有其他Java编码所必需的。据我所知,ImageIcon
在无法加载图像时不会产生异常。因此,请尝试使用newImageIcon(ImageIO.read(..)
。您知道什么是实例吗?