2

問題が発生するのは、jPanel の paintComponent メソッドを上書きするためです。そのため、再描画すると、オブジェクトにフォーカスするまですべてのオブジェクトが非表示になります。jFrameの背景画像を変更するためにインターネットで見つけた唯一の答えであるため、paintComponentメソッドを上書きする必要があります。

まず、jPanel クラスを作成します。

    public class JPanelFondoPrincipal extends javax.swing.JPanel {

    public JPanelFondoPrincipal(){    
        this.setSize(800,500);
    }

    @Override
    public void paintComponent(Graphics g){
        super.paintComponent(g);
        Dimension tamanio = getSize();
        ImageIcon imagenFondo = new ImageIcon(getClass().getResource("/images/fondo_principal.png"));        
        g.drawImage(imagenFondo.getImage(),0,0,tamanio.width, tamanio.height, null);        
        setOpaque(false);
    }
}

そして私のjPanelFormで:

private void formWindowOpened(java.awt.event.WindowEvent evt) {                                  
    // TODO add your handling code here:
    JPanelFondo p = new JPanelFondo();
    this.add(p);
    validate();
    p.repaint();
}

すべてのオブジェクト (ラベル、テキストフィールド...) を新しいパネルに追加しようとしたので、再描画後に追加し、すべてのオブジェクトを手動で表示できるように設定しましたが、まだすべてが表示されません。

どうもありがとう、私は 6 日でアプリを完成させる必要があり、私は分ごとに夢中になっています


編集: CARDLAYOUT のおかげで解決しました

4

2 に答える 2

3
  • add実行時に/remove JPanelsまたはその内容を使用しないでください。代わりにCardLayoutを使用してください

  • あなたJPanelFondo p = new JPanelFondo();はどういうわけか対応していませんpublic class JPanelFondoPrincipal extends javax.swing.JPanel {

  • SSCCEを使用して質問をより早く編集するためのより良いヘルプについては、

于 2012-05-29T17:27:38.053 に答える