Criando um desktop virtual em sua aplicação

Saiba como criar um desktop virtual para sua aplicação.

Criando um desktop virtual em sua aplicação

Esta dica de Swing ilustra um método de usar o fundo de sua aplicação como um desktop virtual. Este código usa o JDesktopPane que é um recipiente (geralmente para JInternalFrames) que simula um desktop.  Tipicamente, o usuário criará JInternalFrames e  ira’ colocá-los em um JDesktopPane.  O usuário pode então interagir com o JInternalFrames como  geralmente faz com os JFrames.  As ações (minimize, maximize, próximo, etc.) são feitas usando um DesktopManager que esta’ associado com o JDesktopPane.

<B><SPAN >import </SPAN></B><SPAN >javax.swing.*;</SPAN>
<B><SPAN >import </SPAN></B><SPAN >java.awt.event.*;</SPAN>
<B><SPAN >import </SPAN></B><SPAN >java.awt.*;</SPAN>

<B><SPAN >public class </SPAN></B><SPAN >DesktopTest </SPAN><B><SPAN >extends </SPAN></B><SPAN >JFrame {</SPAN>
<SPAN >   </SPAN><B><SPAN >public </SPAN></B><SPAN >DesktopTest()</SPAN>
<SPAN >   </SPAN><SPAN >{</SPAN>
<SPAN >      </SPAN><B><SPAN >super</SPAN></B><SPAN >( </SPAN><SPAN >"Usando um JDesktopPane" </SPAN><SPAN >);</SPAN>

<SPAN >      </SPAN><SPAN >JMenuBar bar = </SPAN><B><SPAN >new </SPAN></B><SPAN >JMenuBar();</SPAN>
<SPAN >      </SPAN><SPAN >JMenu addMenu = </SPAN><B><SPAN >new </SPAN></B><SPAN >JMenu( </SPAN><SPAN >"Add" </SPAN><SPAN >);</SPAN>
<SPAN >      </SPAN><SPAN >JMenuItem newFrame = </SPAN><B><SPAN >new </SPAN></B><SPAN >JMenuItem( </SPAN><SPAN >"Frame Interno" </SPAN><SPAN >);</SPAN>
<SPAN >      </SPAN><SPAN >addMenu.add( newFrame );      </SPAN>
<SPAN >      </SPAN><SPAN >bar.add( addMenu );</SPAN>
<SPAN >      </SPAN><SPAN >setJMenuBar( bar );      </SPAN>

<SPAN >      </SPAN><B><SPAN >final </SPAN></B><SPAN >JDesktopPane theDesktop = </SPAN><B><SPAN >new </SPAN></B><SPAN >JDesktopPane();</SPAN>
<SPAN >      </SPAN><SPAN >getContentPane().add( theDesktop );</SPAN>
<SPAN >    </SPAN>
<SPAN >      </SPAN><SPAN >newFrame.addActionListener(</SPAN>
<SPAN >         </SPAN><B><SPAN >new </SPAN></B><SPAN >ActionListener() {</SPAN>
<SPAN >            </SPAN><B><SPAN >public void </SPAN></B><SPAN >actionPerformed( ActionEvent e ) {</SPAN>
<SPAN >               </SPAN><SPAN >JInternalFrame frame =</SPAN>
<SPAN >                  </SPAN><B><SPAN >new </SPAN></B><SPAN >JInternalFrame(</SPAN>
<SPAN >                     </SPAN><SPAN >"Frame Interno"</SPAN><SPAN >,</SPAN>
<SPAN >                     </SPAN><SPAN >true, true, true, </SPAN><B><SPAN >true </SPAN></B><SPAN >);</SPAN>

<SPAN >               </SPAN><SPAN >Container c = frame.getContentPane();</SPAN>
<SPAN >               </SPAN><SPAN >MyJPanel panel = </SPAN><B><SPAN >new </SPAN></B><SPAN >MyJPanel();</SPAN>

<SPAN >               </SPAN><SPAN >c.add( panel, BorderLayout.CENTER );</SPAN>
<SPAN >               </SPAN><SPAN >frame.setSize(</SPAN>
<SPAN >                  </SPAN><SPAN >panel.getImageWidthHeight().width,</SPAN>
<SPAN >                  </SPAN><SPAN >panel.getImageWidthHeight().height );</SPAN>
<SPAN >               </SPAN><SPAN >frame.setOpaque( </SPAN><B><SPAN >true </SPAN></B><SPAN >);</SPAN>
<SPAN >               </SPAN><SPAN >theDesktop.add( frame );</SPAN>
<SPAN >            </SPAN><SPAN >}</SPAN>
<SPAN >         </SPAN><SPAN >}</SPAN>
<SPAN >      </SPAN><SPAN >);</SPAN>

<SPAN >      </SPAN><SPAN >setSize( </SPAN><SPAN >500</SPAN><SPAN >, </SPAN><SPAN >400 </SPAN><SPAN >);</SPAN>
<SPAN >      </SPAN><SPAN >show();</SPAN>
<SPAN >   </SPAN><SPAN >}</SPAN>

<SPAN >   </SPAN><B><SPAN >public static void </SPAN></B><SPAN >main( String args[] )</SPAN>
<SPAN >   </SPAN><SPAN >{     </SPAN>
<SPAN >      </SPAN><SPAN >DesktopTest app = </SPAN><B><SPAN >new </SPAN></B><SPAN >DesktopTest();</SPAN>

<SPAN >      </SPAN><SPAN >app.addWindowListener(</SPAN>
<SPAN >         </SPAN><B><SPAN >new </SPAN></B><SPAN >WindowAdapter() {</SPAN>
<SPAN >            </SPAN><B><SPAN >public void </SPAN></B><SPAN >windowClosing( WindowEvent e )</SPAN>
<SPAN >            </SPAN><SPAN >{</SPAN>
<SPAN >               </SPAN><SPAN >System.exit( </SPAN><SPAN >0 </SPAN><SPAN >);</SPAN>
<SPAN >            </SPAN><SPAN >}</SPAN>
<SPAN >         </SPAN><SPAN >}</SPAN>
<SPAN >      </SPAN><SPAN >);</SPAN>
<SPAN >   </SPAN><SPAN >}</SPAN>
<SPAN >}</SPAN>

<B><SPAN >class </SPAN></B><SPAN >MyJPanel </SPAN><B><SPAN >extends </SPAN></B><SPAN >JPanel {</SPAN>
<SPAN >    </SPAN><B><SPAN >private </SPAN></B><SPAN >ImageIcon imgIcon;</SPAN>

<SPAN >    </SPAN><B><SPAN >public </SPAN></B><SPAN >MyJPanel()</SPAN>
<SPAN >    </SPAN><SPAN >{</SPAN>
<SPAN >       </SPAN><SPAN >imgIcon = </SPAN><B><SPAN >new </SPAN></B><SPAN >ImageIcon( </SPAN><SPAN >"devmedia.gif" </SPAN><SPAN >);</SPAN>
<SPAN >    </SPAN><SPAN >}</SPAN>

<SPAN >    </SPAN><B><SPAN >public void </SPAN></B><SPAN >paintComponent( Graphics g )</SPAN>
<SPAN >    </SPAN><SPAN >{</SPAN>
<SPAN >       </SPAN><SPAN >imgIcon.paintIcon( this, g, </SPAN><SPAN >0</SPAN><SPAN >, </SPAN><SPAN >0 </SPAN><SPAN >);</SPAN>
<SPAN >    </SPAN><SPAN >}</SPAN>

<SPAN >    </SPAN><B><SPAN >public </SPAN></B><SPAN >Dimension getImageWidthHeight()</SPAN>
<SPAN >    </SPAN><SPAN >{</SPAN>
<SPAN >       </SPAN><B><SPAN >return new </SPAN></B><SPAN >Dimension( imgIcon.getIconWidth(),</SPAN>
<SPAN >                             </SPAN><SPAN >imgIcon.getIconHeight() );  </SPAN>
<SPAN >    </SPAN><SPAN >}</SPAN>
<SPAN >}</SPAN>

Artigos relacionados