2014-10-04 92 views
0

看来,JInternalFrames只能添加到JDesktopPane,并且必须将JFrame的内容窗格设置为该JDesktopPane。喜欢的东西:我可以将JInternalFrames添加到JPanel吗?

JFrame frame = new JFrame(); 
JDesktopPane desktopPane = new JDesktopPane(); 
JInternalFrame internalFrame = new JInternalFrame(); 

desktopPane.add(internalFrame); 
frame.setContentPane(desktopPane); 

的问题是,JInternalFrames被允许过任何东西,我添加到JFrame,像JPanels移动。

有没有办法让我将JInternalFrames/JDesktopPane添加到JPanel之类的东西上?这样我可以限制JInternalFrames在JPanel内。如果这是不可能的,那我还有什么其他选择?

+1

JDesktopPane是一个JComponent。 AFAIK,您可以将其添加到JFrame或JPanel作为任何其他JComponent。在文档中我没有看到任何说JDesktopPane必须设置为JFrame的内容窗格的内容。 – 2014-10-04 16:18:17

+0

你可以试试这个链接的解决方案:http://www.coderanch.com/t/342586/GUI/java/JinternalFrame-moveable – 2014-10-04 16:26:12

+0

或者这个[示例](http://stackoverflow.com/a/4091329/230513 )。 – trashgod 2014-10-04 16:37:18

回答

0

您可以将任何对象添加到扩展JComponent的JPanel。例如:

JFrame window = new JFrame(); 
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
window.setBounds(30, 30, 300, 300); 
window.setVisible(true); 
window.setSize(600, 400); 

JDesktopPane desktopPane = new JDesktopPane(); 
JInternalFrame internalFrame = new JInternalFrame();   
JPanel mainPanel = new JPanel(); 
mainPanel.add(desktopPane); 
mainPanel.add(internalFrame); 
window.add(mainPanel); 

希望有帮助!