有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java JFrame不显示面板内容

我刚刚开始学习JFrame,正在尝试使用grouplayout创建一个包含JLabels和JTextFields的框架,但是在运行程序时,面板中的内容没有出现。 感谢所有的帮助

    package practice;

import java.awt.*;

import javax.swing.*;


public class Boxc {
    public static void main(String[] args){
        JFrame frame = new JFrame("---------------------(-_-)---------------------"); 
        JLabel headText = new JLabel("Teach Me"); 

        //head text
        headText.setVerticalAlignment(JLabel.TOP);
        headText.setHorizontalAlignment(JLabel.CENTER);
        headText.setFont(headText.getFont().deriveFont(20f));




        frame.setVisible(true); 
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(700, 500);
        frame.setResizable(false);

        frame.setLocationRelativeTo(null); //Center start position
        frame.add(headText);

        //panel 1
        JPanel panel1 = new JPanel();
        GroupLayout layout = new GroupLayout(panel1);
        panel1.setLayout(layout);
        layout.setAutoCreateGaps(true);
        layout.setAutoCreateContainerGaps(true);


        JLabel uInput = new JLabel("When You Type:");
        JTextField uText = new JTextField("Enter Here");
        JLabel iReply = new JLabel("I Reply:");
        JTextField iText = new JTextField("Enter Here");

        GroupLayout.SequentialGroup hGroup = layout.createSequentialGroup();
        hGroup.addGroup(layout.createParallelGroup().
                addComponent(uInput).addComponent(iText));
        hGroup.addGroup(layout.createParallelGroup().
                addComponent(uText).addComponent(iText));
       layout.setHorizontalGroup(hGroup);





        frame.add(panel1);
    }}

共 (1) 个答案

  1. # 1 楼答案

    Java很奇怪

    这一切都与JFrame方法的顺序有关。您必须始终在末尾执行frame.setVisible(true);,最好是作为启动JFrame的任何代码中的最后一行。那么

    frame.setVisible(true); 
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(700, 500);
        frame.setResizable(false);
    
        frame.setLocationRelativeTo(null); //Center start position
        frame.add(headText);
    

    将更改为

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(700, 500);
        frame.setResizable(false);
    
        frame.setLocationRelativeTo(null); //Center start position
        frame.add(headText);
        frame.setVisible(true); 
    

    希望这有帮助

    编辑:忽略从/到的更改。把frame.setVisible(true);放在frame.add(panel1);后面