摆动和GUI组件没有出现

时间:2014-04-29 14:31:39

标签: java swing

我是一个挥杆的完整noobie。我试图设置一些JPanels和TextAreas,但是花了2天时间阅读API并尝试将面板添加到面板和textareas面板,没有任何东西出现......我完全糊涂了。如果有人能解释如何做到这一点的最好方法我将非常感激

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class GUI {

public static void main(String[] args) {


    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
    frame.setLayout(new FlowLayout());                           // J FRAME

    JPanel panel = new JPanel();                                               // first panel on the left
    panel.setLayout(new BoxLayout(panel, 1));
//  frame.getContentPane().setBackground(Color.red);
    frame.add(panel);

    JLabel surname = new JLabel();
    JLabel initial = new JLabel();
    JLabel ext    = new JLabel();
    surname.setOpaque(true);
    initial.setOpaque(true);
    ext.setOpaque(true);
    frame.add(surname);
    panel.add(initial);
    panel.add(ext);


    JTextArea table = new JTextArea();
    table.setEditable(false);
    panel.add(table);
    table.setVisible(true);

2 个答案:

答案 0 :(得分:2)

您可以在JFrame已经可见之后添加内容。如果你这样做,你需要重新验证你的JFrame,以便它知道重做它的布局。

您还可以等到您添加完所有内容之后再显示您的JFrame。

编辑:这是一个示例程序,显示我正在谈论的内容。尝试运行它,然后取出调用revalidate()来查看差异。

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class Test {

    public static void main(String[] args) {
        final JFrame frame = new JFrame("Test");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        final JButton show = new JButton("Show");
        show.addActionListener(new ActionListener(){

            @Override
            public void actionPerformed(ActionEvent showE) {
                frame.add(new JLabel("Test"), BorderLayout.SOUTH);
                frame.revalidate(); //tell the JFrame to redo its layout!
            }

        });

        frame.add(show);
        frame.setSize(200, 200);
        frame.setVisible(true);
    }
}

答案 1 :(得分:1)

您正在添加一个空元素,如:

JLabel surname = new JLabel();

您的元素已添加但无法显示。

尝试:

JLabel surname = new JLabel("UserName");
JLabel initial = new JLabel("Iinitial");
JLabel ext = new JLabel("Ext");
JTextArea table = new JTextArea(10, 5);