【问题标题】:Java Swing arranging JInternalFramesJava Swing 安排 JInternalFrames
【发布时间】:2011-01-26 20:00:50
【问题描述】:

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

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

【问题讨论】:

    标签: java swing jinternalframe


    【解决方案1】:

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

        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);  
        }
    

    【讨论】:

    • 问题是 10 岁。我相信现在有更好的解决方案。 (尝试 .net 核心 ;-))
    • 不幸的是,我遇到了同样的问题,没有更好的解决方案,只好想出上面的代码。最后,Java 没有太大变化。 :P
    【解决方案2】:

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

    我确信(尽管我至少已经 2 年没有寻找)Swing 没有其他方法可以执行这些操作,我确信某处有人编写了一个第三方库来连接到 Swing 应用程序,如果没有,我会写一个并开源它:)

    编辑,

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

    【讨论】:

      猜你喜欢
      • 2013-05-06
      • 2015-07-27
      • 2014-03-31
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      • 2023-03-22
      • 2013-08-11
      • 1970-01-01
      相关资源
      最近更新 更多