JFrame 不显示面板内容
JFrame not displaying panel content
我刚开始学习 JFrame 并尝试使用 grouplayout 创建一个包含 JLabel 和 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);
}}
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);
希望对您有所帮助。
编辑:忽略变化 from/to。将 frame.setVisible(true);
放在 frame.add(panel1);
之后。
我刚开始学习 JFrame 并尝试使用 grouplayout 创建一个包含 JLabel 和 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);
}}
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);
希望对您有所帮助。
编辑:忽略变化 from/to。将 frame.setVisible(true);
放在 frame.add(panel1);
之后。