簡體   English   中英

swing和GUI組件未出現

[英]swing and GUI components not appearing

我是一個揮桿的完全傻瓜。 我試圖設置一些JPanels和TextAreas來顯示,但是花了兩天時間閱讀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);

您已經在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);
    }
}

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

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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM