2015-07-06 3 views
0

Мне удалось загрузить изображение в качестве фона JPanel, но я не знаю, как сделать JPANEL-детей подходящими для него. Например, когда я добавляю кнопку или CHeckbox, появляется их поверхность. Как добавить кнопку в jpanel (с изображением в качестве фона), не имея этого прямоугольника. вот мой код:Прозрачное фоновое изображение на JPanel

public class BackgroundPanel extends JPanel{ 

    BufferedImage backgroundImage; 

    public BackgroundPanel() throws Exception 
     { 
     // load background image 
     backgroundImage=javax.imageio.ImageIO.read(new java.io.File("/home/imanopholist/Bureau/bg17.jpg")); 
     // set the panel size to the dimension of the background image 
     int panelWidth=backgroundImage.getWidth(null); 
     int panelHeight=backgroundImage.getHeight(null); 
     setPreferredSize(new java.awt.Dimension(panelWidth,panelHeight)); 

     } 
    public void paintComponent(java.awt.Graphics gr) 
     { 
     gr.drawImage(backgroundImage,0,0,null); 

     } 
    } 
     // My panel : 
      try { 
      bgpanel=new BackgroundPanel(); 

      bgpanel.setLayout(null); 
      bgpanel.setPreferredSize(new Dimension(785, 595)); 
      pan1.add(bgpanel); 
      bgpanel.setVisible(true); 
     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     // My Label 
     JLabel lblNbrServices = new JLabel("Number of Services"); 
     lblNbrServices.setFont(new Font("Tahoma", Font.BOLD, 12)); 
     lblNbrServices.setBounds(500, 110, 145, 29); 
     bgpanel.add(lblNbrServices); 

[Интерфейс]

+1

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

+0

Хорошо, все сделано ........................................ – Imanopholist

+0

"* их поверхность появляется *" Что вы имеете в виду? Скриншот? –

ответ

0

Это может быть сделано с помощью BasicPanelUI. Создать один, как это,

BasicPanelUI UI = new BasicPanelUI() { 
    @Override 
    public void paint(Graphics g, JComponent c) { 
     g.drawImage(backgroundImage,0,0,null);     
    } 
}; 

И прикрепить к JPanel нравится эта

this.setUI(UI); 

Другие компоненты могут быть добавлены без каких-либо проблем

+0

Я ценю вашу помощь, но это не сработало. вот что сделано: public class setBackgroundImage { \t статический JPanel pane = новый JPanel(); \t статическая буферная крышка; \t статических BasicPanelUI UI = новые BasicPanelUI() { \t \t \t @Override \t \t общественной недействительная краска (график г, JComponent с) { \t g.drawImage (backg, 0,0, NULL); \t} \t}; \t \t \t JFrame frame = new JFrame(); \t \t \t backg = ImageIO.read (новый java.io.File ("/ home/imanopholist/Bureau/bg.jpg")); \t \t pane.setUI (UI); \t \t \t \t pane.add (новый JCheckBox ("Salut *************")); – Imanopholist

+0

При загрузке изображения перед настройкой пользовательского интерфейса? Это не выглядит так – Rahul

+0

вот моя почта: [email protected]ive.fr, Можете ли вы отправить мне свое, я хочу показать вам свой код и то, что я сделал. – Imanopholist

Смежные вопросы