Java Swing安排JInternalFrames

时间:2010-03-12 13:09:06

标签: java swing jinternalframe

在Java Swing中是否有用于安排JInternalFrames的默认功能?

我想在我的Java Swing应用程序中使用Cascade,Tile等功能,如下所示:http://www.codeproject.com/KB/cs/mdiformstutorial.aspx 我只能找到他们手动安排的代码。在Java Swing中是不是对此没有支持,或者我有点失明?

2 个答案:

答案 0 :(得分:6)

之前我已经完成了级联,但我通过移动帧像素来创建影响我不知道另一种方式这样做,我会弄清楚JDesktopPane有多大然后得到你内部帧的数组getAllFrames(),然后手动执行大小调整和移动。

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

编辑,

只是想到你可以做瓦片等的另一种方式,就是编写一个自定义布局管理器,为你做一些类似于FrameTileLayoutManager的繁重工作,然后使用它......它只是一个想法。

答案 1 :(得分:0)

这并不是真正的解决方案,而是更多的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);  
    }