Ничего в моем JFrame не появляется

Я практикую с использованием графического интерфейса. Я следовал ряду инструкций, однако, когда я пытаюсь запустить программу, появляется только пустая рамка. Никакой информации не видно внутри кадра.

вот код, который у меня есть:

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)

Вам нужно добавить Jlabels в кадре, как указано ниже.

frame.add(lengthL);
frame.add(widthL);
frame.add(areaL);
frame.add(perimeterL);

это только добавит метки, которые вы создали, если вы хотите другой компонент, затем создайте и добавьте его в текстовое поле frame.ex

Решение Вопроса

Добавьте компоненты в панель содержимого :)

Вот предложение с использованием универсального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());
 28 мая 2012 г., 23:11
+1 за упоминание miglayout. Miglayout действительно экономит время. скачать его здесь:miglayout.com и добавьте его в classpath, или используйте maven :)

Просто: не звонитеsetVisible(true) на JFramebefore добавление компонентов к нему. Звоните толькоafter все это было создано, по крайней мере, на начальном этапе.

 28 мая 2012 г., 22:53
Да, и делай то, что рекомендует @Emmanuel! D & APOS; о! 1+ ему!

Вы должны добавить компоненты в JFrame, используя следующий код:

frame.getContentPane().add(lengthL);
frame.getContentPane().add(widthL);
frame.getContentPane().add(areaL);
frame.getContentPane().add(perimeterL);
 28 мая 2012 г., 23:06
Да, не видел этого. 1+
 28 мая 2012 г., 23:03
Опубликованный код в вопросе устанавливает LayoutManager, но вы правы, он также не настроен на панель содержимого ...
 28 мая 2012 г., 22:57
ContentPane JFrame по умолчанию использует BorderLayout, и поэтому этот код будет отображать perimeterL, и это все.

Ваш ответ на вопрос