2010-10-30 64 views
0

,我發現這個鏈接.. LINK我想是有java的面板是有一個背景,並與第一JPanel的一半大小,但使用本身是透明的,並用臉或圖像另一個JPanel的一個JPanel球在中間.. :)就像從鏈接的截圖..是可以在Java代碼? :)我只是想它爲網絡編程。只是一種DIV的來有,但我不知道在java中.. :)抱歉的英文不好..:d我曾以此爲背景..與PNG背景

package waterKing; 

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 

@SuppressWarnings("serial") 

public class Main extends JFrame { 
MainData data = new MainData(); 

public static void main(String[] args) { 
    Main frmMain = new Main(); 
    frmMain.setExtendedState(Frame.MAXIMIZED_BOTH); 
    frmMain.setVisible(true); 

} 

public Main() { 
    data.tk = getToolkit(); 
    data.d = data.tk.getScreenSize(); 

    data.jP = new JPanel() {    
     protected void paintComponent(Graphics g) { 
      data.e = getSize(); 
      data.iI = new ImageIcon("images/mainBG.png").getImage(); 
      g.drawImage(data.iI,0, 0, data.d.width, data.d.height, null); 
      super.paintComponent(g);  
     }     
    }; 

    data.jP.setOpaque(false); 
    data.jSp = new JScrollPane(data.jP); 
    data.jB = new JButton("EXIT"); 
    data.jB.setBounds(10,10,200,40); 
    data.jB.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 
      System.exit(0); 
     } 
    }); 
    data.jP.setLayout(null); 
    data.jP.add(data.jB);  

    this.setTitle("Water King Inventory System"); 
    this.setUndecorated(true); 
    this.getContentPane(); 
    this.add(data.jSp); 
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    this.setLocationRelativeTo(null); 

} 

} 

我不知道如何將其他的JPanel添加到顯示在中間這樣的背景alt text

+0

你好.. :)我可以請求幫忙..? :) – 2010-10-30 13:47:21

回答

1

我不知道如何在這樣的背景

其添加其他的JPanel顯示在中間就像將組件添加到面板。您需要使用佈局管理器,然後根據佈局管理器的規則將組件正確定位。在你的情況下,你可以將背景面板的佈局管理器設置爲BorderLayout。然後,您可以添加一個帶有相應圖標的JLabel到BorderLayout的中心。

您將需要設置首選大小(或覆蓋面板的getPreferredSize()方法,因爲您將其添加到滾動窗格中。滾動條只會在面板的首選大小大於滾動窗格。

你不應該閱讀的圖像在你的paintComponent()方法,因爲這種方法被稱爲多次。

你不應該使用「屏幕尺寸」,以確定的寬度/高度因爲圖像幀包含一個邊框,你需要使用該面板的大小。

擺脫所有的setBounds()代碼。學習使用佈局管理器。

對於通用背景板,考慮到這裏的大多數做檢查Background Panel的建議。

+0

感謝您的提示和答覆.. :)無論如何,最後一個問題,使用佈局管理器比setBounds()有什麼優勢? – 2010-10-30 19:04:32

+0

如何佈局管理的工作原理(http://download.oracle.com/javase/tutorial/uiswing/layout/howLayoutWorks.html) – camickr 2010-10-30 20:45:38

+0

一些更多的關於太陽上線這個主題「的setLayout(空)將沒有必要。永遠!」 (http://forums.oracle.com/forums/thread.jspa?forumID=1106&threadID=1351374)。我覺得我最初的主張有一些非常好的挑戰,但是這些挑戰來自那些真正掌握GUI設計藝術的人。小衆(比如你和我)應該堅持佈局。 – 2010-10-30 23:51:31