2012-06-20 50 views
0

所以我目前正在製作一個登錄屏幕,使用圖形對象和「遊戲循環」製作了一個很酷的背景效果。當我加入JTextField雖然,它是在一切而不是上面看到。無論如何要在JFrame內部的所有組件下繪製圖形?在組件下面繪製圖形

這裏是圖形的圖像:

enter image description here

文本字段是存在的,只是下方一切被吸入到所述框架的表面上。我想以某種方式重新排序,以便在組件下面繪製。

這裏是我當前幀代碼:

frame = new JFrame("Login"); 
    frame.setDefaultCloseOperation(EXIT_ON_CLOSE); 
    frame.getContentPane().setPreferredSize(new Dimension(450, 200)); 
    frame.getContentPane().setBackground(Color.black); 
    frame.setBackground(Color.black); 
    frame.setLayout(new FlowLayout()); 

    JTextField user = new JTextField(20); 
    user.setLocation(100, 200); 
    user.setVisible(true); 
    frame.add(user); 

    frame.pack(); 
    frame.setVisible(true); 

    frame.createBufferStrategy(2); 
    buff = frame.getBufferStrategy(); 

    Painter painter = new Painter(); 
    frame.add(painter); 

任何幫助嗎?

+1

'user.setLocation(100,200);'不要這樣做,請使用佈局(構造函數,佈局填充和邊框中的大小提示)進行大小調整和定位。 –

回答

5

AnimationTest顯示了一種方法。它重寫paintComponent()並調用super.paintComponent()以確保組件在背景上呈現。點擊任意位置放置文本字段;調整大小以查看默認的FlowLayout是如何工作的。 JPanel默認使用現有的緩衝策略進行雙緩衝。

+2

另請參閱[此示例](http://stackoverflow.com/a/10836833/418556),其中包含帶有動畫BG(GIF)的面板以及同一問題上的接受答案 - 以加載最佳方式它。 ;) –