2015-04-25 156 views
0

我從Java編程語言開始。我想創建一個JFrame並在其上放置一個背景圖像,並在JFrame上方,我想插入小部件:JTextArea,JButton ...但它們不能重疊。這裏是我的代碼:JFrame上的背景圖像

public void go() { 
    cadre = new JFrame("Premiere Feneêtre"); 
    cadre.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
    cadre.setSize(600, 600); 
    cadre.setVisible(true);` 

    BorderLayout agencement = new BorderLayout(); 
    JPanel arrierePlan = new JPanel(agencement); 
    arrierePlan.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); 

    Box boiteABoutons = new Box(BoxLayout.PAGE_AXIS); 
    boiteABoutons.setSize(150,150); 
    boiteABoutons.setOpaque(false); 
    //boiteABoutons.setBackground(Color.yellow); 
    b1 = new JButton("Bouton 1"); 
    b1.addActionListener(this); 
    b2 = new JButton("Bouton 2"); 
    b2.addActionListener(this); 
    b3 = new JButton("Bouton 3"); 
    boiteABoutons.add(b1); 
    boiteABoutons.add(b2); 
    boiteABoutons.add(b3); 
    zoneTexte = new JTextArea(); 

    Panneau p1 = new Panneau(); 
    arrierePlan.add(BorderLayout.SOUTH, boiteABoutons); 
    arrierePlan.add(BorderLayout.NORTH,zoneTexte); 

    cadre.getContentPane().add(p1); 
    cadre.getContentPane().add(arrierePlan); 

} 

public class Panneau extends JPanel { 
    public void paintComponent(Graphics g){ 
     try { 
      Image img = ImageIO.read(new File("C:/Users/........png")); 
      //g.drawImage(img, 10, 10, this); 
      g.drawImage(img, 10, 10, this.getWidth(), this.getHeight(), this); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

我讀過幾個關於這個問題的事情,我遇到了這個問題,但沒有什麼幫助。

謝謝 對不起,我的英文不好

回答

1
cadre.getContentPane().add(p1); 
cadre.getContentPane().add(arrierePlan); 

你不能將多個組件到BorderLayout的中央添加。

相反,你要的組件添加到圖像面板:

Panneau p1 = new Panneau(); 
p1.setLayout(new BorderLayout()); 
p1.add(boiteABoutons, BorderLayout.SOUTH); 
p1.add(zoneTexte, BorderLayout.NORTH); 
cadre.add(p1); 

今後問一個問題之前,請搜索論壇(主題標題通常包含好的關鍵字下手)。正如您在本頁右側的Related標題下發現的帖子所看到的那樣,經常詢問這個問題。