gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:28:21 24 4
gpt4 key购买 nike

我使用 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 等将被放置的位置。

奇怪的是,当我用 http://netbeans.org/kb/docs/java/gui-functionality.html 的教程制作练习 GUI 时,尽管没有 main 方法,但 GUI 被设置为主类,并且 GUI 自行出现。

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

编辑:我试过了

JFrame window = new JFrame();
ParameterUI gui = new ParameterUI();
window.setContentPane(gui);
window.pack();
window.setVisible(true);

阅读了有关 JFrames 的简短教程,但它似乎没有任何改变...

最佳答案

setVisible()Component 上在该组件中设置一个标志(此时您并不真正关心的其他事情)。此标志由包含您的组件的容器检查,以确定是否需要显示该组件。

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

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

// expected to be called on the AWT/Event Dispatch Thread
public void show(ParameterUI ui) {
JFrame frame = new JFrame();
frame.setLayout(new BorderLayout());
frame.add(ui, BorderLayout.CENTER);
frame.pack();
frame.setLocationRelativeTo(null); // position in the center of the screen
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.setVisible(true);
}

关于Java - setVisible(true) 对 GUI 没有影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3433809/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com