2016-04-16 23 views
1
Game(){ 
    JFrame frame = new JFrame("Display Image"); 
    JPanel panel = (JPanel)frame.getContentPane(); 
    frame.setSize(1000,625); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    JLabel label = new JLabel(); 
    label.setIcon(new ImageIcon("C:/Users/Ragnar/Desktop/GameBoard.png")); 
    panel.add(label); 
    frame.setLocationRelativeTo(null); 
    frame.pack(); 
    frame.setVisible(true); 
} 

の前にだから私は、このコンストラクタを持っている、と私はイメージでいくつかの新しいのJLabelを追加したいが、私は彼らが最初の画像である第一の画像の上に表示させたいですjLabelのラベル。誰でも私にこれを達成する方法を教えてもらえますか?私は通常それらを追加しようとしましたが、ラベルの後ろに表示されます。は別のJLabel

答えて

3

あなたが背景イメージを持っていて、背景画像の上にJLabelを表示したい場合は、あなたのJLabelを追加し、背景画像を保持するためにJPanelを使用することができます。

は通常、あなたが原因コンテナで使用されるデフォルトのレイアウトマネージャ(のようなJPanelFlowLayoutまたはJFrameBorderLayout)に、それは成功しません2 JLabelが重なっを聞かせしようとした場合。

実際にラップオーバーする場合は、レイアウトをnullに設定する必要があります。しかし、コンポーネントの外観を制御できなくなると、新しい問題が発生する可能性があります。このようなケースでは、私は通常、カスタムペイントのために行くだろうし、あなたが興味を持っている任意の特定の順序にしたい画像を描画したがって

の場合は:How to create a background and foreground image which overlaps?