2012-11-12 3 views
0

У меня есть программа с JFrame и JInternalFrames внутри. Поэтому, когда я пытаюсь установить фон с помощью этого кода:JInternalFrame image bag

BufferedImage myImage; 
myImage = ImageIO.read(new File("C:/5/JavaLibrary2/background.jpg")); 
ImagePanel Image = new ImagePanel(myImage); 
frame.setContentPane(Image); 

My JInternalFrames только что ушел. Итак, см. Короткий video with debug

frame.setContentPane (изображение); просто удалите мои окна JInternal.

+1

* «Итак, см. Короткое видео ..» * В нем есть Джон Клиз? В противном случае, спасибо. Чтобы лучше помочь, опубликуйте [SSCCE] (http://sscce.org/). Также, каков ваш вопрос? –

+0

Кто такой JC? BTW, моя проблема >>> Мои JInternalFrames только что прошли – JohnDow

+0

См. [John Cleese] (http://en.wikipedia.org/wiki/John_Cleese) (смешной парень). –

ответ

1

У меня нет проблем.

enter image description here

Я Использовался как JLabel и пользовательская живопись процедур.

Я создал и настроить внутренние кадры, прежде чем добавлять их на рабочий стол,

Я добавил внутреннюю рамку на рабочем столе, а затем изменили свои панели контента, а также метание обновление до конца EDT для обеспечения видимости основного кадра.

Проблема должна быть в какой-то части вашего кода, который вы нам не показываете.

public class TestInternalFrame { 

    public static void main(String[] args) { 
     new TestInternalFrame(); 
    } 

    public TestInternalFrame() { 
     EventQueue.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
       } catch (ClassNotFoundException ex) { 
       } catch (InstantiationException ex) { 
       } catch (IllegalAccessException ex) { 
       } catch (UnsupportedLookAndFeelException ex) { 
       } 

       JDesktopPane desktop = new JDesktopPane(); 

       final JInternalFrame frame1 = new JInternalFrame("Image on Label"); 
//    frame1.setContentPane(new LabelImagePane()); 
//    frame1.pack(); 
//    frame1.setLocation(0, 0); 
       frame1.setVisible(true); 
       desktop.add(frame1); 

       final JInternalFrame frame2 = new JInternalFrame("Painted Image"); 
//    frame2.setContentPane(new ImagePane()); 
//    frame2.pack(); 
//    frame2.setLocation(frame1.getWidth(), 0); 
       frame2.setVisible(true); 
       desktop.add(frame2); 


       JFrame frame = new JFrame("I Haz Images"); 
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       frame.setLayout(new BorderLayout()); 
       frame.add(desktop); 
       frame.setSize(800, 400); 
       frame.setLocationRelativeTo(null); 
       frame.setVisible(true); 

       SwingUtilities.invokeLater(new Runnable() { 
        @Override 
        public void run() { 
         frame1.setContentPane(new LabelImagePane()); 
         frame1.pack(); 
         frame1.setLocation(0, 0); 
         frame2.setContentPane(new ImagePane()); 
         frame2.pack(); 
         frame2.setLocation(frame1.getWidth(), 0); 
        } 
       }); 

      } 
     }); 
    } 

    public class LabelImagePane extends JPanel { 

     public LabelImagePane() { 
      setLayout(new BorderLayout()); 
      JLabel label = new JLabel(); 
      add(label); 

      try { 
       label.setIcon(new ImageIcon(ImageIO.read(new File("...")))); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    } 

    public class ImagePane extends JPanel { 

     private BufferedImage image; 

     public ImagePane() { 
      try { 
       image = ImageIO.read(new File("...")); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 

     @Override 
     public Dimension getPreferredSize() { 
      return image == null ? super.getPreferredSize() : new Dimension(image.getWidth(), image.getHeight()); 
     } 

     @Override 
     protected void paintComponent(Graphics g) { 
      super.paintComponent(g); 
      if (image != null) { 
       int x = (getWidth() - image.getWidth())/2; 
       int y = (getHeight() - image.getHeight())/2; 
       g.drawImage(image, x, y, this); 
      } 
     } 
    } 
} 
Смежные вопросы