首页 > 解决方案 > JLabel 的弹出窗口上没有显示任何内容

问题描述

我正在尝试创建一个允许弹出图像和文本的简单脚本。窗口正在弹出,但它是空白的,上面什么都没有。有人知道我在做什么错吗?

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.*;

public class Thermomter {
    public static void main(String[] args) {
        ImageIcon cold = new ImageIcon("cold_thermomtor.png");

        JLabel label = new JLabel();
        label.setIcon(cold);
        label.setText("omg this is painfull");
            
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(500, 500);
        frame.setVisible(true);
        frame.add(label);
        
    }
}

标签: javaswingjframejlabel

解决方案


调用frame.pack();beforesetVisible(true)将确保内部的所有元素在显示它们之前都正确调整大小。

pack 方法调整框架的大小,使其所有内容都等于或高于它们的首选大小 [...]

[...] pack 让框架布局管理器负责框架大小,布局管理器擅长调整平台依赖性和其他影响组件大小的因素。


推荐阅读