Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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-setVisible(true)对GUI没有影响_Java_User Interface_Netbeans - Fatal编程技术网

Java-setVisible(true)对GUI没有影响

Java-setVisible(true)对GUI没有影响,java,user-interface,netbeans,Java,User Interface,Netbeans,我用Netbeans GUI Builder创建了一个GUI(称为ParameterUI),现在我想创建一个实例并显示它。然而,使用 ParameterUI gui = new ParameterUI(); gui.setVisible(true); 不会导致任何窗口出现。。。 测试表明,在这些命令之后,gui.isVisible()返回true,但gui.isValid()返回false。调用gui.revalidate()也没有效果 在ParameterUI类中,构造函数方法由Netbea

我用Netbeans GUI Builder创建了一个GUI(称为ParameterUI),现在我想创建一个实例并显示它。然而,使用

ParameterUI gui = new ParameterUI();
gui.setVisible(true);
不会导致任何窗口出现。。。 测试表明,在这些命令之后,gui.isVisible()返回true,但gui.isValid()返回false。调用gui.revalidate()也没有效果

在ParameterUI类中,构造函数方法由Netbeans生成,并且

public class ParameterUI extends javax.swing.JPanel {
    public ParameterUI() {
        initComponents();
    }
}
initComponents只是每个jPanel等的放置位置列表

奇怪的是,当我在上用教程制作一个实践GUI时,GUI被设置为主类,尽管没有主方法,GUI自动出现

不幸的是,我是GUI的新手(我正在使用builder,因为我没有时间学习如何制作一个合适的手工GUI),但是有人能告诉我如何使GUI可见吗?我可以提供更多的代码,如果需要

编辑:我试过了

JFrame window = new JFrame();
ParameterUI gui = new ParameterUI();
window.setContentPane(gui);
window.pack();
window.setVisible(true);
阅读了关于JFrames的简短教程,但它似乎没有改变任何东西…

setVisible()
在一个组件中设置了一个标志(除此之外,您现在并不真正关心的其他事情)。此标志由包含组件的容器检查,以查看是否需要显示组件

上的
setVisible()
控制窗口是否显示在屏幕上。现在,它所做的只是让你的窗口出现或消失。通常,您希望在使其可见之前为其指定一些大小和位置
pack()
setLocationRelativeTo()
在这里很有用

因此,要查看gui,
ParameterUI
必须扩展
Window
(可能是
JFrame
JDialog
),或者它必须包含在窗口中,并且您应该在窗口上调用
setVisible(true)
,而不是
ParameterUI
实例。 这样做的一个简单示例是(未经测试):


您是使用JFrame还是使用Netbeans创建桌面应用程序?因为如果你创建了一个桌面应用程序,Netbeans有它自己的类,我也有很多问题。。。因此,我建议您使用JFrame。无论如何,您都可以尝试以下操作,以查看UI是否启动:

SwingUtilities.invokeLater(new Runnable() {
           public void run()
           {
               ParameterUI gui = new ParameterUI();
               gui.setVisible(true);
           }
       });
由于您正在扩展JPanel,因此需要将面板放在JFrame上才能看到。要做到这一点,在netbeans中,只需创建一个新的JFrame(右键单击包并选择“new JFrame”。现在,返回到面板,在左边空白处(项目、文件等下),您应该有一个名为“Inspector”的项。单击该项,您应该会看到组件的树视图。右键单击要显示的JPanel并选择“复制”。返回刚刚创建的JFrame,从左边距找到“Inspector”按钮,单击它,顶部应该有一个名为“[JFrame]”的项目。右键单击该项目并选择“粘贴”。您现在应该可以看到已创建的面板


要查看面板,只需输入JFrame的名称而不是ParameterUI

,我可能会有所帮助,我刚开始使用netbeans builder,我已经完成了桌面应用程序的一半。相信我,我在使用netbeans GUI builder时遇到了很多问题!!你能提供更多的代码和信息吗:is you main class(GUI class)FrameView或SingleFrameApplication或…等等???ParameterUI似乎扩展了JPanel,而不是JFrame。因此它需要一个窗口(JFrame或其他)为了使其可见。ParameterUI确实扩展了JPanel,因为Netbeans就是这样生成代码的。嗯,那么我应该如何将其放入窗口/JFrame?我应该将其更改为扩展JFrame,还是创建一个并以某种方式添加我的“gui”实例?我修改了答案,希望解释如何将面板移动到JFrame:)@斯特拉:我添加了一个如何在自己的窗口中显示现有组件的示例。EDT不应该影响任何东西。它不是桌面应用程序。是的,它终于可以工作了!非常感谢,这已经困扰了我很久了。不客气:)。请记住,无论何时您想要构建GUI,请使用JFrame;)
SwingUtilities.invokeLater(new Runnable() {
           public void run()
           {
               ParameterUI gui = new ParameterUI();
               gui.setVisible(true);
           }
       });