我正在练习使用GUI。我一直在遵循一组指令,但是当我尝试运行程序时,只显示一个空框。框架内部无法看到任何信息。
这是我的代码:
package practice528;
import java.util.Scanner;
import java.io.*;
import javax.swing.*;
import java.awt.*;
public class Practice528
{
public static void main(String[] args)
{
JFrame frame = new JFrame("Rectangle Calculator");
frame.setVisible(true);
frame.setSize(400,300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JLabel lengthL, widthL, areaL, perimeterL;
lengthL = new JLabel("Enter the length: ", SwingConstants.RIGHT);
widthL = new JLabel("Enter the width: ", SwingConstants.RIGHT);
areaL = new JLabel("The area is ", SwingConstants.RIGHT);
perimeterL = new JLabel("The perimeter is ", SwingConstants.RIGHT);
frame.setLayout(new GridLayout(5,2));
System.out.println();
} //end main
} //end class
答案 0 :(得分:3)
简单:在添加组件之前,不要在JFrame 上调用setVisible(true)
。 之后只调用,整个事情已经建立,至少最初是这样。
答案 1 :(得分:3)
将组件添加到内容窗格中:)
以下是使用多功能MigLayout:
的建议JPane panel = (JPanel) frame.getContentPane();
panel.setLayout(new MigLayout("fill, wrap 2", "[right][fill]"));
panel.add(lengthL);
panel.add(new JTextField());
panel.add(widthL);
panel.add(new JTextField());
panel.add(areaL);
panel.add(new JTextField());
panel.add(perimeterL);
panel.add(new JTextField());
答案 2 :(得分:3)
您应该使用以下代码将组件添加到JFrame:
frame.getContentPane().add(lengthL);
frame.getContentPane().add(widthL);
frame.getContentPane().add(areaL);
frame.getContentPane().add(perimeterL);
答案 3 :(得分:0)
你需要在框架中添加Jlabel,就像在给定的情况下一样。
frame.add(lengthL);
frame.add(widthL);
frame.add(areaL);
frame.add(perimeterL);
这只会添加你创建的标签,如果你想要另一个组件然后创建并添加到frame.ex文本字段。