JLabel未显示在JFrame中

问题描述 投票:1回答:2

我已经在stackoverflow中搜索了此问题,但是我无法解决问题。因此,我有一个分配给JLabel的简单图像,并将该标签添加到JFrame中,但没有出现。有什么帮助吗? PS:如果我设置的图像与屏幕尺寸不同,如何像重新缩放一样“重新调整”或适合它?

package electricscreen;

import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.*;

/**
 *
 * @author MertKarakas
 */
public class ElectricScreen extends JFrame{

    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    int width = (int) screenSize.getWidth();
    int height = (int) screenSize.getHeight();
    private String url = "el.jpg";
    private ImageIcon img;
    private JLabel lbl;

    public ElectricScreen() {
        setLayout(new FlowLayout());
        setSize(width, height);
        setResizable(false);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        img = new ImageIcon(getClass().getResource("/electricscreen/el.jpg"));
        lbl = new JLabel(img);
        add(lbl);
        lbl.setVisible(true);    
    }
    public static void main(String[] args){
        ElectricScreen e = new ElectricScreen();
    }
}
java swing jframe jlabel
2个回答
3
投票

您正在将组件添加到已经可见的JFrame中。在调用setVisible之前添加组件(首选-您可能还需要调用pack来布置组件)[]

add(lbl);
pack();
setVisible(true);

或在添加组件后在JFrame上调用revalidate

setVisible(true);
add(lbl);
revalidate();
    

0
投票

总是在构造函数的末尾添加框架的setvisible(true);

© www.soinside.com 2019 - 2024. All rights reserved.