在Java Swing中是否有任何默认的JInternalFrames排列功能?
我想在我的Java Swing应用程序中拥有Cascade、Tile等功能,像这样。http:/www.codeproject.comKBcsmdiformstutorial.aspx 我只能找到他们手动完成排列的代码。是Java Swing中没有这方面的支持,还是我有点盲目?
我以前做过级联,但我是通过移动帧的像素来创建效果的,我不知道还有其他方法,我会计算出JDesktopPane有多大,然后用getAllFrames()得到一个内部帧的数组,然后手动执行大小和移动。
我确信(尽管我至少有2年没看了),swing没有其他的方法来执行这些操作,我确信有人在某个地方写了一个第三方库来栓在swing应用程序上,如果没有的话,我会写一个并把它开源:)
编辑。
只是觉得另一种方式,你可以做瓷砖等,将是写一个自定义的布局管理器,做了繁重的工作,为你像FrameTileLayoutManager的东西,然后使用,它只是一个想法。
这不是一个真正的解决方案,而是一个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);
}