首页 > 解决方案 > IntelliJ Java Gui 不添加 JTextField

问题描述

我的问题是 IntelliJ IDE 没有在JTextField这里添加代码。

public IntellJ (){

        JFrame frame = new JFrame();
        frame.setVisible(true);
        frame.setSize(400,600);
        frame.setLocation(400,200);
        frame.setResizable(false);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel panel=new JPanel();
        setContentPane(panel);
        panel.setLayout(null);
        frame.add(panel);


        JLabel jLabel1=new JLabel("Ogrenci Numaraniz");      
        JTextField jText=new JTextField("Hi");

        jLabel1.setBounds(20,20,150,50);

        jLabel3.setBounds(20,70,150,50);
        panel.add(jLabel1);       
        panel.add(jText);
    }

如果我要删除 JTextField 并尝试JLabel jText = new JLabel("Hi");编写此代码是有效的。我不明白为什么JTextField会出现问题。

标签: javaswinguser-interfacejtextfield

解决方案


我认为您程序中的主要问题是您尝试使用组件的绝对定位(在组件上使用panel.setLayout(null)和使用setBounds())。相反,始终在 Swing UI 中使用布局管理器。

此外,frame.setVisible(true)在设置所有 UI 组件后,最后调用。

我已经对您的代码进行了这些更改并且它可以工作:(
在这里我只是删除setLayout(null)了 。因此,默认布局管理器正在运行。)

import javax.swing.*;

public class IntellJ {

  public IntellJ (){

    JFrame frame = new JFrame();
    frame.setSize(400,600);
    frame.setLocation(400,200);
    frame.setResizable(false);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JPanel panel=new JPanel();
    frame.add(panel);

    JLabel jLabel1=new JLabel("Ogrenci Numaraniz");
    JTextField jText=new JTextField("Hi");

    panel.add(jLabel1);
    panel.add(jText);

    frame.setVisible(true);
  }

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

推荐阅读