我是 Netbeans Gui 开发的新手,我正在尝试使 gui 几乎像 netbeans gui 一样,但是当我最大化主框架时,内部框架不会重新调整大小。因为当我使用 Grid bag layout 将 Jinternalframes 放置在 Jdesktoppane 中时,没有授权选项。在不使用 jdesktoppane netbeans 的情况下,可以选择水平和垂直自动调整大小。
我无法弄清楚只有桌面窗格正在调整大小,其他内部框架保持相同大小
netbeans 不为内部组件提供自动调整大小选项。
没有自动调整大小的属性。每个内部框架都有一个“最大化”属性。一次只能最大化一帧。在这种情况下,最大化的框架将自动与桌面窗格一起调整大小。
如果您希望在桌面窗格调整大小时调整所有内部框架的大小,那么您需要在桌面窗格中添加一个,然后在生成事件ComponentListener
时手动调整每个内部框架的大小。componentResized()
如果我没有在 JDesktopPane 中放置内部框架,那么我可以选择为每个 Jinternalframe 自动调整大小并且它会正常调整大小
这是由您添加内部框架的面板的布局管理器完成的。JDesktopPane 并非旨在以这种方式工作。它旨在让用户在桌面周围随机拖动组件。
如果您希望 JInternalFrames 在父级调整大小时调整大小,则必须自己进行。使用布局管理器不会为您做到这一点,就像 camickr 所说,无论如何您都不应该将其用于 JDesktopPane。
如果要调整内部框架的大小,则需要在 JFrame 上设置一个 ComponentListener 并使用 setBounds() 将内部框架的大小调整为您选择的比例。
@Override public void componentResized(ComponentEvent e) {
if (e.getSource() == yourFrame) {
yourInternalFrame1.setBounds(0, 0, yourFrame.getContentPane().getWidth() / 4, yourFrame.getContentPane().getHeight());
yourInternalFrame2.setBounds(yourFrame.getContentPane().getWidth() / 4, 0, yourFrame.getContentPane().getWidth() / 2, yourFrame.getContentPane().getHeight() / 2);
// and so on
// also can use yourDesktopPane instead of yourFrame.getContentPane()
}
}