2011-01-31 7 views
0

私のguiに問題があります... "label"を使用して背景画像を作成したいのですが、 "text field"が重複しています... "label"(スイングコントロールで)を使用するので、画像を..とテキストフィールドをオーバーラップすることを考えて..しかし、それは動作しません、私はテキストフィールドをドラッグするたびに..私のレイアウトが台無しになった...あなたは私を助けるか、私の問題にもっと良い解決策を提案できますか?事前に私はちょうど私のGUIの背景画像との命令を表示したいJDialogフォームでは、テキストフィールドはラベルと重なることがありますか?

..

のthnx :)

答えて

0

あなたはJLayeredPaneを使用してみましたか? the Swing tutorialから、あなたのケースでは必要なコンポーネントのように見えます。

+0

ありがとうございます...しかし、私のTextAreaを不透明な背景にする方法を知っていますか?そのプロパティでその背景のコードをカスタムにしようとしています。これはjTextArea1.setBackground();のメソッドです。 – iamanapprentice

0

あなたはJLabelの上の画像を追加することができます。イメージの上に他のコンポーネントを追加する場合は、イメージをJPanelに追加する必要があります。この方法で、レイアウトの制御ができます。

  1. はJPanelのを拡張し、リーダーとしてのBorderLayoutにあなたの使って、JDialogのレイアウトを設定し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. を含んでクラスを作成します。このソリューションのために必要な手順の数があります。

  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(); 
} 
関連する問題