Java Swing安排JInternalFrames。

问题描述 投票:4回答:2

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

我想在我的Java Swing应用程序中拥有Cascade、Tile等功能,像这样。http:/www.codeproject.comKBcsmdiformstutorial.aspx 我只能找到他们手动完成排列的代码。是Java Swing中没有这方面的支持,还是我有点盲目?

java swing jinternalframe
2个回答
6
投票

我以前做过级联,但我是通过移动帧的像素来创建效果的,我不知道还有其他方法,我会计算出JDesktopPane有多大,然后用getAllFrames()得到一个内部帧的数组,然后手动执行大小和移动。

我确信(尽管我至少有2年没看了),swing没有其他的方法来执行这些操作,我确信有人在某个地方写了一个第三方库来栓在swing应用程序上,如果没有的话,我会写一个并把它开源:)

编辑。

只是觉得另一种方式,你可以做瓷砖等,将是写一个自定义的布局管理器,做了繁重的工作,为你像FrameTileLayoutManager的东西,然后使用,它只是一个想法。


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);  
    }
© www.soinside.com 2019 - 2024. All rights reserved.