【问题标题】:JDialog Size Is Not Being RenderedJDialog 大小未呈现
【发布时间】:2023-03-30 18:50:01
【问题描述】:

我创建了一个 JDialog 以保持窗口模式,以阻止应用程序处理超过某个点。但是,当我使用这种方法时,会弹出框,但大小没有设置为 400,400,看起来好像没有大小。

public class test {

public static void main(String[] args) {
    JFrame theDog = new JFrame();
    JButton theButton = new JButton("hello");
    //theDog.setSize(200, 200);
    JDialog thadialog = new JDialog(theDog,"theTitle", Dialog.ModalityType.APPLICATION_MODAL);
    thadialog.setVisible(true);
    thadialog.setSize(400,400);
    thadialog.pack();


    System.out.println("hello");
}
}

如何让 JDialog 看起来有 400,400 的大小?

【问题讨论】:

  • setVisible放在pack()之后。试试dialog.setPreferredSize
  • 删除了这个包并添加了这个:thadialog.setPreferredSize(new Dimension(400,400)); ....还是什么都没有

标签: java swing jdialog


【解决方案1】:

pack() 函数告诉窗口将自身打包到尽可能小以适应其组件。与调用setSize() 函数相比,设置大小的方式不同

通过同时调用setSize()pack(),基本上是在说“首先将尺寸设置为 400x400,然后将尺寸设置为尽可能小。”

换句话说,如果您希望窗口具有特定大小,请坚持使用setSize() 函数。摆脱对pack()的调用。

编辑 - 在设置其大小之前,您还设置了可见的对话框。由于您的对话框阻塞了当前线程,因此在对话框关闭 之后 之前,您甚至无法访问 setSize() 函数。将呼叫setSize() 移动到之前呼叫setVisible()

【讨论】:

  • 我已经准备好在没有包的情况下尝试了,我添加了包,因为 setSize 不起作用。我刚刚注释掉了,还是没有显示
  • @simon 您在设置大小之前设置对话框可见。由于对话框阻塞了线程,因此在对话框关闭之前,您甚至都无法使用 setSize() 函数。将 setSize() 调用移到 setVisible() 调用之上。
  • 谢谢.. 有效。你知道为什么我不能在对话框中添加项目吗?如果我这样做 thaDog.add(theButton); ,它不显示按钮的屏幕?
  • @simon 没有看到一些代码很难说。您可以考虑将MCVE 作为一个新问题发布。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-24
  • 1970-01-01
  • 1970-01-01
  • 2011-08-11
  • 2017-05-05
  • 1970-01-01
相关资源
最近更新 更多