2014-04-04 118 views
-2

是否可以将JDesktopPaneJInternalFrame添加到JPanel如果是这样,我该怎么做。我尝试添加它,但它无法工作。将JDesktopPane添加到JPanel

+1

正如在你最后陈述[关于这个问题的问题](http:// stackoverfl ow.com/questions/22874242/adding-jdesktoppane-to-jframe-using-gridbaglayout),除非你提供一个【示例演示】(https://stackoverflow.com/help/mcve)你的问题,有很少的人可以做。简而言之,是的。 – MadProgrammer

+0

尽管我同意MadProgrammer的说法,但还是猜测:你忘记调用'internalFrame.setVisible(true)'了吗?无论如何,这应该是一个很好的起点:http://docs.oracle.com/javase/tutorial/uiswing/components/internalframe.html – Marco13

回答

4

“是否有可能的JDesktopPane和JInternalFrame的添加到JPanel”

当然,你可以

​​

enter image description here

import java.awt.BorderLayout; 
import java.awt.Graphics; 
import java.awt.Image; 
import java.io.IOException; 
import java.net.URL; 

import javax.imageio.ImageIO; 
import javax.swing.JDesktopPane; 
import javax.swing.JFrame; 
import javax.swing.JInternalFrame; 
import javax.swing.JPanel; 
import javax.swing.SwingUtilities; 
import javax.swing.UIManager; 
import javax.swing.UnsupportedLookAndFeelException; 
import javax.swing.border.TitledBorder; 

public class JDesktopPaneDemo1 { 
    private static final String URL_ONE = "http://www.hdbackgroundspoint.com/wp-content/uploads/2013/12/16/345t34.jpeg"; 
    private static final String URL_TWO = "http://www.hdbackgroundspoint.com/wp-content/uploads/2013/09/hh.jpeg"; 
    private Image image; 
    private JDesktopPane desktop; 

    public JDesktopPaneDemo1() { 
     desktop = createDesktopPane(); 
     JInternalFrame iFrame = createInternalFrame(); 
     desktop.add(iFrame); 
     JPanel panel = new JPanel(new BorderLayout()); 
     panel.setBorder(new TitledBorder("DesktopPane")); 
     panel.add(desktop); 

     JFrame frame = new JFrame("Desktop Background"); 
     frame.setContentPane(panel); 
     frame.setSize(500, 350); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setLocationRelativeTo(null); 
     frame.setVisible(true); 
     iFrame.setVisible(true); 
    } 

    public JDesktopPane createDesktopPane() { 

     JDesktopPane pane = new JDesktopPane() { 
      private Image image; 
      { 
       try { 
        image = ImageIO.read(new URL(URL_ONE)); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 

      @Override 
      protected void paintComponent(Graphics g) { 
       super.paintComponent(g); 
       g.drawImage(image, 0, 0, getWidth(), getHeight(), this); 
      } 
     }; 
     return pane; 
    } 

    private JInternalFrame createInternalFrame() { 
     JInternalFrame frame = new JInternalFrame(); 
     frame.setSize(200, 200); 
     return frame; 
    } 

    public static void main(String[] args) { 
     for (UIManager.LookAndFeelInfo laf : UIManager 
       .getInstalledLookAndFeels()) { 
      if ("Nimbus".equals(laf.getName())) { 
       try { 
        UIManager.setLookAndFeel(laf.getClassName()); 
       } catch (ClassNotFoundException | InstantiationException 
         | IllegalAccessException 
         | UnsupportedLookAndFeelException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
      } 
     } 
     SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       new JDesktopPaneDemo1(); 
      } 
     }); 
    } 
} 
+0

什么是URL_TWO?它似乎没有被使用。 –

+0

@AndrewThompson'image = ImageIO.read(new URL(URL_ONE));'我正在制作一些不同的示例(对于[不同的问题](http://stackoverflow.com/a/22866831/2587435))和我想让自己更容易切换图像 –