问题描述
我正在尝试从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);
}
}
解决方法
- 您要混合使用GUI-和控制台应用程序。这真的是您想要的吗?
- 您是
nulling
的布局JFrame
。你为什么这么做?您基本上总是需要布局。看看this指南。
您的JLabel
确实在显示。输入名称后,尝试调整JFrame
的大小,然后应该会看到JLabel
。如果您在程序结束时调用JLabel
,则setVisible(true)
将始终出现。这是因为调用JFrame
时setVisible(true)
会被绘制。如果向其添加其他组件,则不会重绘JFrame
。如果您调整它的大小,它将被重新粉刷。
但是,您应该看看basic Java Swing tutorials。