Java Gui 组件不会出现在 JFrame 中

Posted

技术标签:

【中文标题】Java Gui 组件不会出现在 JFrame 中【英文标题】:Java Gui components do not appear in the JFrame 【发布时间】:2014-04-05 02:23:08 【问题描述】:

我有一个奇怪的问题,可能是我使用的 eclipse 的问题:

我想编写一个计算器,但应该出现在 Jframe 中的组件不存在!直到我点击它时文本字段才会出现,当我用鼠标指针越过它时按钮就会出来......

这是我的代码:

package calculator;

import java.awt.Font;

import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JButton;

public class MeinTaschenrechner extends JFrame 

    JTextField textField;
    JButton button1;

    public MeinTaschenrechner() 

        setVisible(true);
        setSize(300, 300);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        setTitle("Taschenrechner");
        setResizable(false);
        setLayout(null);


        textField=new JTextField("0");
        textField.setBounds(5, 10, 285, 50);
        Font font=textField.getFont().deriveFont(Font.PLAIN,30);
        textField.setFont(font);
        add(textField);
//      addingNumberButtons();
        button1=new JButton("1");
        button1.setBounds(5, 65, 75, 65);
        add(button1);
    

这是我的主要课程:

package calculator;

public class ExecuteKlasse 

    public static void main(String[] args) 

        MeinTaschenrechner cc=new MeinTaschenrechner();

    


【问题讨论】:

【参考方案1】:

你不能设置 setVisible(true);你的第一行代码。添加 setVisible(true);作为构造函数的最后一行。

【讨论】:

完美!如果是第一行有什么问题? 如果它是第一行,那么无论处于何种状态的组件都会开始绘制。在下一次重绘之前,您构建的其他组件不会出现,这可能有多种原因,例如,如果您拉伸窗口,或者如果组件像您使用按钮一样具有特殊的滚动区域,则将鼠标悬停在特殊的滚动区域上。 @user3133542,您需要先将组件添加到框架中,然后才能使其可见。另外,不要使用 setBounds()。 Swing 旨在与布局管理器一起使用。

以上是关于Java Gui 组件不会出现在 JFrame 中的主要内容,如果未能解决你的问题,请参考以下文章

[Java GUI]学习笔记1

GUI编程----- 容器组件

Java的GUI设计

来自线程内的实例化组件不会重绘到 Java 中的 JFrame

Java基础 | 简单使用Jframe创建一个窗体实例

Java基础:GUI