窝窝没有头 2021-07-12 14:43 采纳率: 100%
浏览 108
已采纳

为什么Java图形化界面JFrame显示白板却没有组件呢

import javax.swing.*;
import java.awt.*;
@SuppressWarnings("serial")
public class Notebook extends JFrame{
public static final int LINES=50;
public static final int CHAR_PER_LINES=40;

public static void main(String args[])
{
    new Notebook();
}

public Notebook()
{
        JFrame one = new JFrame("学生界面");
        JLabel lab1 = new JLabel("学号");
        JTextField jtfid1 = new JTextField(10);
        JLabel lab2 = new JLabel("姓名");
        JTextField jtfid2 = new JTextField(10);
        JLabel lab3 = new JLabel("性别");
        JTextField jtfid3 = new JTextField(10);
        JLabel lab4 = new JLabel("专业");
        JTextField jtfid4 = new JTextField(10);
        JLabel lab5 = new JLabel("宿舍号");
        JTextField jtfid5 = new JTextField(10);
        JLabel lab6 = new JLabel("入住时间");
        JTextField jtfid6 = new JTextField(10);
        JButton b1 = new JButton("添加");
        JButton b2 = new JButton("关闭");
        
        GridLayout myCard = new GridLayout(7,1);
            one.setLayout(myCard);
        
        one.add(lab1);
        one.add(jtfid1);
        one.add(lab2);
        one.add(jtfid2);
        one.add(lab3);
        one.add(jtfid3);
        one.add(lab4);
        one.add(jtfid4);
        one.add(lab5);
        one.add(jtfid5);
        one.add(lab6);
        one.add(jtfid6);
        one.add(b1);
        one.add(b2);
        
        getContentPane().add(one);
        this.setBounds(500, 200, 300, 400);
        this.setVisible(true);
  }
}

有人说是因为在构造方法中重新定义了JFrame导致的,但是我还是不太理解到底是为什么,它的解决方法是什么呢?
改用下面的JPanel就可以显示组件

                JLabel lab1 = new JLabel("学号");
        JTextField jtfid1 = new JTextField(10);
        JLabel lab2 = new JLabel("姓名");
        JTextField jtfid2 = new JTextField(10);
        JLabel lab3 = new JLabel("性别");
        JTextField jtfid3 = new JTextField(10);
        JLabel lab4 = new JLabel("专业");
        JTextField jtfid4 = new JTextField(10);
        JLabel lab5 = new JLabel("宿舍号");
        JTextField jtfid5 = new JTextField(10);
        JLabel lab6 = new JLabel("入住时间");
        JTextField jtfid6 = new JTextField(10);
        JButton b1 = new JButton("添加");
        JButton b2 = new JButton("关闭");
        
        GridLayout myCard = new GridLayout(7,1);
            JPanel p = new JPanel();
            p.setLayout(myCard);
        
        p.add(lab1);
        p.add(jtfid1);
        p.add(lab2);
        p.add(jtfid2);
        p.add(lab3);
        p.add(jtfid3);
        p.add(lab4);
        p.add(jtfid4);
        p.add(lab5);
        p.add(jtfid5);
        p.add(lab6);
        p.add(jtfid6);
        p.add(b1);
        p.add(b2);
        getContentPane().add(p);
        this.setTitle("添加学生");
        this.setBounds(500, 200, 300, 400);
                this.setVisible(true);
  • 写回答

3条回答 默认 最新

  • CSDN专家-Fay 2021-07-12 14:55
    关注

    getContentPane().add(one);你这是把JFrame加在内容面板上了,一般不会这么做,所以显示不了
    我们是将组件加在内容面板上才可以显示,就像你的第二个例子一样

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已采纳回答 7月12日
  • 创建了问题 7月12日

悬赏问题

  • ¥50 三种调度算法报错 有实例
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥20 java在应用程序里获取不到扬声器设备