Java Swing:JLabel文本未显示在屏幕上

问题描述

我正在尝试从Scanner输入名称,并通过JLabel在屏幕上显示名称。但是,它没有出现。我制作的按钮出现,但标签没有。我想念什么吗?

import javax.swing.*;
import java.awt.*; 
import java.util.*; 
import java.lang.*; 

public class MyProgram {
   
    public static void main(String[] args) {
        //creating instance of JFrame
        
        JFrame f= new JFrame();
        JButton b1 = new JButton("Generate Password");
        b1.setBounds(90,100,180,40);
        f.add(b1);
        b1.setBackground(Color.RED);
        b1.setopaque(true);
        f.setSize(500,500);
        f.setLayout(null);
        f.setVisible(true);
        Scanner sc = new Scanner(system.in);
        System.out.println("What is your name?"); 
        String name = sc.nextLine(); 
        JLabel n = new JLabel(); 
        n.setBounds(400,30,30);
        n.setText(name + "'s Password Generator!");
        f.add(n);
    }
}

解决方法

  1. 您要混合使用GUI-和控制台应用程序。这真的是您想要的吗?
  2. 您是nulling的布局JFrame。你为什么这么做?您基本上总是需要布局。看看this指南。

您的JLabel确实在显示。输入名称后,尝试调整JFrame的大小,然后应该会看到JLabel。如果您在程序结束时调用JLabel,则setVisible(true)将始终出现。这是因为调用JFramesetVisible(true)会被绘制。如果向其添加其他组件,则不会重绘JFrame。如果您调整它的大小,它将被重新粉刷。

但是,您应该看看basic Java Swing tutorials