1

私は自分のプロジェクトを作成するために netbeans で Java Swing グラフィカル エディターを使用していますが、Java Swing オプションを使用して画像を jpanel に追加できないなど、いくつかの制限があります。したがって、新しい jPanel を実装してコーディングする必要があります。

私の問題は、Java Swing グラフィカル エディターによって生成されたコードを編集できないことです。そのため、initComponents() セクションに新しい JPanel コードを追加する代わりに、メインの JPanel のコンストラクターでこの関数が呼び出された後にそれを実行しています。

しかし、私が追加したコードは「デザイナー」によって認識されません。つまり、コード化されたオブジェクトを作成した後、「デザイナー」でそれらを使用できず、すべてをコード化する必要があります。これは、プレビューと移動がどれほど簡単かを考えると苦痛です「デザイナー」ツールの要素。

「DESigner」にスチールが表示されているのに、必要なものをコーディングするにはどうすればよいですか?

事前にThx

4

1 に答える 1

2

JPanelNetBeans GUI エディタを使用して にイメージを追加するには、次の 2 つの方法があります。以下のクラスImagePanelは、コマンドを使用して作成されNew JPanel Formます。

非デザイナー: 最初のアプローチでは、コンストラクターを変更して背景画像を設定し、クラスをオーバーライドpaintComponent()して画像を描画します。エディター フォールド内のコードは変更されません。

デザイナー: GUI デザイナーを使用して、2 番目の方法ではJLabel名前付きを追加しimageLabelます。JLabel中央揃えの を作成するコードはIconという名前のプロパティに入りCustom Creation Code、次の 2 行はPost-Creation Code.

package overflow;

import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JLabel;

public class ImagePanel extends javax.swing.JPanel {

    private Image image;

    /** Creates new form ImagePanel */
    public ImagePanel(Image image) {
        this.image = image;
        this.setPreferredSize(new Dimension(
            image.getWidth(null), image.getHeight(null)));
        initComponents();
    }

    @Override
    protected void paintComponent(Graphics g) {
        g.drawImage(image, 0, 0, null);
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        imageLabel = new JLabel(new ImageIcon("image2.jpg"), JLabel.CENTER);
        imageLabel.setHorizontalTextPosition(JLabel.CENTER);
        imageLabel.setVerticalTextPosition(JLabel.TOP);

        setLayout(new java.awt.GridLayout());

        imageLabel.setText("imageLabel");
        add(imageLabel);
    }// </editor-fold>


    // Variables declaration - do not modify
    private javax.swing.JLabel imageLabel;
    // End of variables declaration

}

パネルを表示するための適切なMainクラスとmain()メソッドを次に示します。

package overflow;

import java.awt.EventQueue;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;

public class Main {
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                JFrame f = new JFrame();
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                try {
                    f.add(new ImagePanel(ImageIO.read(new File("image1.jpg"))));
                } catch (IOException ex) {
                    ex.printStackTrace();
                }
                f.pack();
                f.setVisible(true);
            }
        });
    }
}

http://i41.tinypic.com/dmw4nl.png

于 2010-05-07T02:48:25.170 に答える