java添加jtextfield会产生空jframe

pdkcd3nj  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(308)

我是相当新的这和我下面的教程与一切工作的伟大。但是,在添加 JTextField ,的 JFrame 变成纯灰色背景。我调用的gui类 JFrame 从main.java,所以我尝试 JFrame 只有main.java中的文本字段,但它也有同样的问题。在文本字段中添加和删除组件也没有起到任何作用。把它放在面板上没有帮助(面板与标签配合得很好)。

public class GUI extends JFrame {

    JButton button;

    GUI(){
        this.setTitle("Visualization");
        this.setSize(1200, 800);
        this.setResizable(false);
        this.setLayout(null);
        this.setVisible(true);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        ImageIcon image = new ImageIcon("Default/WhiteCatPFP.jpg");
        this.setIconImage(image.getImage());
        //this.getContentPane().setBackground(Color.BLACK);

        Border border = BorderFactory.createLineBorder(Color.green, 3);

        JLabel label = new JLabel();
        label.setForeground(Color.GREEN);
        label.setText("Bro, do you even code?");
        label.setBackground(Color.BLACK);
        label.setHorizontalAlignment(JLabel.CENTER);
        label.setOpaque(true);
        label.setBorder(border);
        label.setFont(new Font(this.getFont().getName(), Font.PLAIN, 30));
        //label.setVerticalAlignment(JLabel.TOP);
        //label.setFont(new Font("MV Boli", Font.PLAIN, 20));

        button = new JButton();
        button.setFocusable(false);
        button.setForeground(Color.GREEN);
        button.setBackground(Color.BLACK);
        button.setOpaque(true);
        button.setBorder(border);
        button.setText("Baka");
        button.setFont(new Font(this.getFont().getName(), Font.PLAIN, 20));
        button.setBounds(50, 10, 100, 90);
        button.addActionListener(e -> System.out.println("Epic")); // Called lambda

        JTextField aTextField = new JTextField("Hello"); // <-------------------- Error inducing!
        aTextField.setBounds(0, 400, 400, 200);

        JPanel panelOne = new JPanel();
        panelOne.setBounds(0, 0, 400, 200);
        panelOne.setLayout(new BorderLayout());

        JPanel panelTwo = new JPanel();
        panelTwo.setBounds(0, 200, 400, 200);
        panelTwo.setLayout(new BorderLayout());

        JPanel panelThree = new JPanel();
        panelThree.setBounds(0, 400, 400, 200);
        panelThree.setLayout(new BorderLayout());

        panelOne.add(label);
        panelTwo.add(button);
        panelThree.add(aTextField);
        this.add(panelOne);
        this.add(panelTwo);
        this.add(panelThree);
    }
}

有很多东西是用来做笔记的,我更愿意在这个特定的项目中使用null布局(除非这是错误的来源),右边的空白是我稍后要添加的东西。
注意:没有文本字段,其他所有内容都显示良好。即使只是用 JTextField aTextField = new JTextField(); 制造了 JFrame 灰色背景。也没有撞车。
非常感谢您的帮助!

c0vxltue

c0vxltue1#

我在听一个教程
如果教程使用的是空布局,那么去掉教程。没有理由使用空布局。swing设计用于布局管理器(这里列出的原因太多了)。
阅读关于布局管理器的swing教程以获得正确的演示代码。教程代码将向您展示如何正确创建摆动框架。从教程中的演示代码开始,然后进行更改。
但是,当添加jtextfield时,jframe会变成纯灰色背景。
文本字段与您的问题无关。
问题是,在使框架可见之前,需要将组件添加到框架中。这个 setVisible( true ) 语句应该是构造函数中的最后一个语句。

相关问题