2012-12-11 36 views
7

जावा नेटबीन का उपयोग कर एमडीआई (एकाधिक दस्तावेज़ इंटरफ़ेस) में jdesktoppane पृष्ठभूमि छवि को कैसे बदलें? मतलब मैंने जावा एमडीआई में jdesktoppane जोड़ा है, इसलिए अब मैं उस jdesktoppane की डिफ़ॉल्ट पृष्ठभूमि छवि को बदलना चाहता हूं जिसे मैं जावा एमडीआई में उपयोग कर रहा हूं। कोई आसान तरीका?jdesktoppane डिफ़ॉल्ट पृष्ठभूमि छवि को कैसे बदलें?

संलग्न स्नैपशॉट लिंक जांचें कि आप मेरे प्रश्न को बेहतर ढंग से समझेंगे।

http://i50.tinypic.com/iml1e9.jpg

+2

"पुराने" जिस तरह से आप एक नया 'JDesktopPane' का विस्तार करने और ओवरराइड मदद के लिए' paintComponent' – MadProgrammer

+0

धन्यवाद करना होगा और आप मुझे इस तरह के लिए स्रोत कोड के रूप में छोटे से अधिक मदद दे सकते हैं इस coz मैं इस के साथ नया हूँ .. –

उत्तर

12

MadProgrammers टिप्पणी करने के लिए +1।

बस JDesktopPanepaintComponent(..) ओवरराइड करें और छवि को आकर्षित करने के लिए drawImage(Image img,int x,int y,ImageObserver io) पर कॉल करें।

enter image description here

import java.awt.*; 
import java.awt.event.*; 
import java.awt.image.BufferedImage; 
import java.net.URL; 
import javax.imageio.ImageIO; 
import javax.swing.JDesktopPane; 
import javax.swing.JFrame; 
import javax.swing.JInternalFrame; 
import javax.swing.JMenu; 
import javax.swing.JMenuBar; 
import javax.swing.JMenuItem; 
import javax.swing.SwingUtilities; 

public class JInternalFrameDemo { 

    private JDesktopPane jdpDesktop; 
    private static int openFrameCount = 0; 
    private BufferedImage img; 

    public JInternalFrameDemo() { 
     JFrame frame = new JFrame("JInternalFrame Usage Demo"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     try { 
      img = ImageIO.read(new URL("http://images1.wikia.nocookie.net/__cb20120817224359/villains/images/6/6a/Nine-Tailed_Fox_(Naruto).jpg")); 
     } catch (Exception ex) { 
      ex.printStackTrace(); 
     } 

     // A specialized layered pane to be used with JInternalFrames 
     jdpDesktop = new JDesktopPane() { 
      @Override 
      protected void paintComponent(Graphics grphcs) { 
       super.paintComponent(grphcs); 
       grphcs.drawImage(img, 0, 0, null); 
      } 

      @Override 
      public Dimension getPreferredSize() { 
       return new Dimension(img.getWidth(), img.getHeight()); 
      } 
     }; 



     createFrame(); // Create first window 

     frame.setContentPane(jdpDesktop); 

     frame.setJMenuBar(createMenuBar()); 

     // Make dragging faster by setting drag mode to Outline 
     jdpDesktop.putClientProperty("JDesktopPane.dragMode", "outline"); 

     frame.pack(); 
     frame.setVisible(true); 
    } 

    protected JMenuBar createMenuBar() { 
     JMenuBar menuBar = new JMenuBar(); 
     JMenu menu = new JMenu("Frame"); 
     menu.setMnemonic(KeyEvent.VK_N); 
     JMenuItem menuItem = new JMenuItem("New IFrame"); 
     menuItem.setMnemonic(KeyEvent.VK_N); 
     menuItem.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       createFrame(); 
      } 
     }); 
     menu.add(menuItem); 
     menuBar.add(menu); 
     return menuBar; 
    } 

    protected void createFrame() { 
     MyInternalFrame frame = new MyInternalFrame(); 
     frame.setVisible(true); 
     // Every JInternalFrame must be added to content pane using JDesktopPane 
     jdpDesktop.add(frame); 
     try { 
      frame.setSelected(true); 
     } catch (java.beans.PropertyVetoException e) { 
     } 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       new JInternalFrameDemo(); 
      } 
     }); 
    } 

    class MyInternalFrame extends JInternalFrame { 

     static final int xPosition = 30, yPosition = 30; 

     public MyInternalFrame() { 
      super("IFrame #" + (++openFrameCount), true, // resizable 
        true, // closable 
        true, // maximizable 
        true);// iconifiable 
      setSize(300, 300); 
      // Set the window's location. 
      setLocation(xPosition * openFrameCount, yPosition 
        * openFrameCount); 
     } 
    } 
} 
+1

बहुत मदद के लिए धन्यवाद और मेरे लिए यह ठीक काम करता है .... –

0

मैं एक अलग में इसे हल:

रंग श्रृंखला सम्मानित करने के लिए भूल जाते हैं और ओवरराइड paintComponent(..) विधि

यहाँ में पहली कॉल के रूप में super.paintComponent(g) फोन एक उदाहरण है डेस्कटॉप ऑब्जेक्ट बनाने के लिए फ़ंक्शन।

कोड के रूप में नीचे

private JDesktopPane intializeDesktop(JDesktopPane mydesktop,String imagePath,int scalx,int scaly) { 

     // A specialized layered pane to be used with JInternalFrames 
     mydesktop = new JDesktopPane() { 
      ImageIcon icon = new ImageIcon(imagePath); 
      Image image = icon.getImage(); 

      Image newimage = image.getScaledInstance(scalx, scaly, Image.SCALE_SMOOTH); 

      @Override 
      protected void paintComponent(Graphics g) { 
       super.paintComponent(g); 
       g.drawImage(newimage, 0, 0, this); 
      } 
     }; 

     return mydesktop; 
    } 
+0

स्वीकार्य उत्तर की तुलना में कुछ भी नया नहीं है ;-) – kleopatra

+0

नीचे दिए गए नए आइटम: - -hat फ़ंक्शन पुन: प्रयोज्य आप JDesktop ऑब्जेक्ट बनाते समय निर्देशिका को कॉल कर सकते हैं या आप इसे उपयोगिता में जोड़ सकते हैं - यह फ़ंक्शन छवि निर्देशिका में स्थानीय छवि फ़ाइल पर काम करता है –

+0

पुन: उपयोग और हार्ड-कोडित छवि का नाम/स्केलिंग पैरामीटर स्वयं में एक विरोधाभास है ;-) – kleopatra