You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java Swing问题:同时设置JFrame不可调整大小与JLabel图标时内容不显示

问题解决方法

核心问题在于你把窗口显示代码frame.setVisible(true)放在了组件添加之前,当同时设置窗口不可调整大小(setResizable(false))和加载图片时,窗口初始化完成后新增的组件无法触发界面重绘,导致内容无法显示。

修复后的代码

package ui;

import java.awt.*;
import java.io.IOException;

import javax.swing.*;

public class Main {
    public static void main(String[] args) throws IOException {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(1600, 900);
        frame.setLayout(null);
        frame.setBackground(new Color(0xFAFAFA));
        frame.setTitle("App !");
        frame.setResizable(false); // LINE A

        JLabel label = new JLabel();
        label.setText("Hello world!");
        label.setIcon(new ImageIcon("assets/logo-50x50.png")); // LINE B
        label.setBackground(Color.red);
        label.setOpaque(true); // 新增:让背景色生效
        label.setBounds(0, 0, 250, 250);

        frame.add(label);
        frame.setVisible(true); // 移到所有组件添加完成后执行
    }
}

关键修改点

  • 调整窗口显示时机:所有组件添加完成后再调用frame.setVisible(true),确保窗口初始化时就能加载所有组件
  • 添加JLabel不透明设置:JLabel默认是透明的,setBackground不会生效,加上setOpaque(true)才能看到红色背景
  • 保持setResizable(false)的位置:放在窗口显示前执行,不影响组件加载

内容的提问来源于stack exchange,提问作者8c6b5df0d16ade6c

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 16:07:29