2011-01-31 25 views
0

我遇到了麻煩,我的GUI ...想要使用「標籤」的背景圖像,然後有一個重疊的「文本字段」...我使用「標籤」(在擺動控制),所以我可以導入圖像..然後想重疊一個文本字段..但這並不奏效,因爲每次我拖動文本字段..我的佈局被毀了......你能幫助我或建議更好的解決我的問題。Textfield可以重疊在JDialog窗體上的標籤嗎?

我只是想表明,在我的GUI背景圖像的指令..

日Thnx提前:)

回答

0

您是否嘗試過使用JLayeredPane?從the Swing tutorial,它看起來像你的情況下所需的組件。

+0

感謝這項工作...但你知道如何使我的TextArea作爲一個不透明的背景...我嘗試定製其屬性的背景代碼,這是顯示的方法jTextArea1.setBackground(); – iamanapprentice 2011-01-31 15:50:03

0

您可以在一個JLabel添加圖片。如果您想要在圖像頂部添加其他組件,您必須將圖像添加到JPanel。這樣你將有佈局控制。有一些參與該解決方案的步驟:

  1. 創建擴展JPanel幷包括閱讀器和和的paintComponent

    public class ImageJPanel extends JPanel { 
        public ImageJPanel() { 
         try { 
          myImage = ImageIO.read(new File("singer.jpg")); 
         } catch (IOException ex) { 
          System.out.println("No image! " + ex.getMessage()); 
         } 
        } 
    @Override 
    public void paintComponent(Graphics g) { 
        g.drawImage(myImage, 0, 0, null); 
    } 
    
    private BufferedImage myImage;} 
    
  2. 設置你的JDialog到BorderLayout的佈局的類。

  3. 添加另一個JPanel p,使其不透明以便看到圖像,p.setOpaque(false);帶有JTextFields,JLabels等到您的內容窗格。

  4. 將ImageJPanel實例添加到邊界佈局的中心。

下面是一個測試類擴展JDialog的一個樣本構造:

public Tester() { 
    setLayout(new BorderLayout()); 
    JPanel myImagePanel = new ImageJPanel(); 
    add(myImagePanel); 
    JPanel workPanel = new JPanel(); 
    workPanel.setOpaque(false); 
    workPanel.add(new JLabel("a label")); 
    workPanel.add(new JTextField(10)); 
    myImagePanel.add(workPanel); 
    pack(); 
}