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>
|