我的JFrame中没有任何内容出现

时间:2012-05-28 20:50:50

标签: java swing jframe

我正在练习使用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

4 个答案:

答案 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文本字段。