Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有时显示swing文本字段,有时不显示';T_Java_Swing_Jframe_Jlabel_Jtextfield - Fatal编程技术网

Java 有时显示swing文本字段,有时不显示';T

Java 有时显示swing文本字段,有时不显示';T,java,swing,jframe,jlabel,jtextfield,Java,Swing,Jframe,Jlabel,Jtextfield,我有一段代码,有时运行正常,有时运行不正常。我实际上没有改变任何东西,但有时文本字段会出现,有时不会出现。代码怎么可能每次都以不同的方式运行?这对我来说毫无意义。我对java相当陌生,但我肯定不认为这是可能的 如果有人能帮助我,你能包括修复,以及为什么会发生这种情况吗?因为我想完全理解这个问题 这是我的密码: import javax.swing.*; public class Window { JFrame frame; JPanel panel; public W

我有一段代码,有时运行正常,有时运行不正常。我实际上没有改变任何东西,但有时文本字段会出现,有时不会出现。代码怎么可能每次都以不同的方式运行?这对我来说毫无意义。我对java相当陌生,但我肯定不认为这是可能的

如果有人能帮助我,你能包括修复,以及为什么会发生这种情况吗?因为我想完全理解这个问题

这是我的密码:

import javax.swing.*;

public class Window {
    JFrame frame;
    JPanel panel;

    public Window(int x, int y, String t, boolean isHomePage){

        int xSize = x;
        int ySize = y;
        String title = t;

        frame = new JFrame();
        frame.setSize(xSize, ySize);
        frame.setLocationRelativeTo(null);
        frame.setTitle(title);
        frame.setVisible(true);
        frame.setResizable(false);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


        panel = new JPanel();
        frame.add(panel);
        panel.setLayout(null);
        panel.setVisible(true);

        if (isHomePage){
            homePage();
        }


    }

    public void homePage(){

        JLabel usernameLabel = new JLabel();
        usernameLabel.setText("Please enter your username:");
        usernameLabel.setBounds(0,100,300,20);
        panel.add(usernameLabel);
        usernameLabel.setVisible(true);

        JTextField textbox = new JTextField();
        textbox.setVisible(true);
        textbox.setBounds(280,100,400,20);
        panel.add(textbox);

    }


}
正如莱默斯所说——


  • 使用布局管理器来管理非空布局。虽然空布局和
    setBounds()
    可能会像创建复杂GUI的最简单和最好的方式一样吸引新手,但您创建的GUI越多,在使用它们时遇到的困难就越严重。当GUI调整大小时,它们不会调整您的组件的大小,它们是一个需要增强或维护的皇家女巫,当它们放置在滚动窗格中时会完全失败,当在所有平台或屏幕分辨率与原始分辨率不同的情况下查看时,它们看起来非常糟糕
  • 在将所有组件添加到GUI之后,而不是之前,在JFrame上调用
    setVisible(true)
  • 请注意,您对setVisible(true)的工作原理感到困惑。是的,您正在对子组件调用它,但是默认情况下它们已经将其visible属性设置为true,因此对子组件调用它没有任何效果。问题是在JFrame上调用setVisible时。您在添加带有文本字段的JPanel之前调用它,因此这会导致它偶尔出现。你自己证明一下。如果texzt字段不可见,并且现在应该显示,则最小化并恢复GUI

    我自己,如果我想像你在上面尝试的那样交换视图,我会使用

    正如莱默斯所说--


  • 使用布局管理器来管理非空布局。虽然空布局和
    setBounds()
    可能会像创建复杂GUI的最简单和最好的方式一样吸引新手,但您创建的GUI越多,在使用它们时遇到的困难就越严重。当GUI调整大小时,它们不会调整您的组件的大小,它们是一个需要增强或维护的皇家女巫,当它们放置在滚动窗格中时会完全失败,当在所有平台或屏幕分辨率与原始分辨率不同的情况下查看时,它们看起来非常糟糕
  • 在将所有组件添加到GUI之后,而不是之前,在JFrame上调用
    setVisible(true)
  • 请注意,您对setVisible(true)的工作原理感到困惑。是的,您正在对子组件调用它,但是默认情况下它们已经将其visible属性设置为true,因此对子组件调用它没有任何效果。问题是在JFrame上调用setVisible时。您在添加带有文本字段的JPanel之前调用它,因此这会导致它偶尔出现。你自己证明一下。如果texzt字段不可见,并且现在应该显示,则最小化并恢复GUI


    我自己,如果我想像你在上面尝试的那样交换视图,我会使用

    使用布局管理器使用布局管理器可以,我明白。但是你能解释一下为什么它有时能起作用,但其他的却不行吗?当然,如果它是一个集合代码,那么每次都应该完全一样吗?@Cutter:这是因为你对
    setVisible(true)
    的工作原理感到困惑。是的,您正在对子组件调用它,但是默认情况下它们已经将其visible属性设置为true,因此对子组件调用它没有任何效果。问题是在JFrame上调用setVisible时。您在添加带有文本字段的JPanel之前调用它,因此这会导致它偶尔出现。你自己证明一下。如果texzt字段不可见,则最小化并恢复GUI,现在应该显示。好的,我理解。但是你能解释一下为什么它有时能起作用,但其他的却不行吗?当然,如果它是一个集合代码,那么每次都应该完全一样吗?@Cutter:这是因为你对
    setVisible(true)
    的工作原理感到困惑。是的,您正在对子组件调用它,但是默认情况下它们已经将其visible属性设置为true,因此对子组件调用它没有任何效果。问题是在JFrame上调用setVisible时。您在添加带有文本字段的JPanel之前调用它,因此这会导致它偶尔出现。你自己证明一下。如果texzt字段不可见,并且现在应该显示,则最小化并恢复GUI。