4

在 Java Swing 中安排 JInternalFrames 是否有任何默认功能?

我想在我的 Java Swing 应用程序中拥有 Cascade、Tile 等功能,如下所示:http: //www.codeproject.com/KB/cs/mdiformstutorial.aspx 我只能在他们安排的地方找到代码手动。Java Swing 中是否不支持此功能,还是我有点盲目?

4

2 回答 2

6

我以前做过级联,但我是通过移动帧像素来创建效果的,然后手动执行大小调整和移动。

我确信(尽管我现在至少 2 年没有寻找)swing 没有其他方法来执行这些操作,我敢肯定某个地方的某个人已经编写了一个第三方库来固定到 swing 应用程序上,如果不是我会写一个并开源它:)

编辑,

只是想你可以做瓷砖等的另一种方法是编写一个自定义布局管理器,为你完成繁重的工作,比如 FrameTileLayoutManager,然后使用它......这只是一个想法。

于 2010-03-12T13:46:47.727 回答
0

这不是真正的解决方案,而是更多的黑客。如果您可以在渲染框架之前读取桌面窗格的当前宽度,则可以级联/堆叠内部框架。

    int c=desktopPane.getAllFrames().length;
    Random r=new Random();
    if (c<3){
            RegistryDash registry = new RegistryDash();
            registry.setVisible(true);

            desktopPane.add(registry);
            //registry.setLocation(r.nextInt(200),r.nextInt(200));
            registry.setLocation(c*50,c*50);
            try {
                registry.setSelected(true);
            } catch (java.beans.PropertyVetoException e) {
            }

    }else{
     JOptionPane.showMessageDialog(this,"More than three similar windows are currently active. Close some to allow new windows.","Multiple Window Error",JOptionPane.WARNING_MESSAGE);  
    }
于 2020-04-24T19:46:33.260 回答