2

Netbeansでクラスを作成JFrameし、ジェネレーターを使用して追加しjPanelました。を拡張するクラスもありますJPanel。今、私はこのクラスのオブジェクトを作成し、私のパネルがある場所に彼を追加したいのですが、JFrame私が試みているすべての結果が得られないため、正しい方法を見つけることができません

public static void main(String args[]) {
    
    java.awt.EventQueue.invokeLater(new Runnable() {

        public void run() {
            Frame f  = new Frame();
            jPanel1  = new MyPanel();
            f.pack();
            f.setVisible(true);
        }
    });

さて、多分私が話していることのより正確な例を示します:

最初のファイル:

class MyPanel extends javax.swing.JPanel {
public MyPanel() {
        initComponents();
        
    }
}

フレーム付きの別のファイル:

public class Frame extends javax.swing.JFrame {
public Frame() {
        initComponents();
}
public static void main(String args[]) {
        
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                Frame f  = new Frame();
                MyPanel p = new MyPanel();
                jPanel1 = p;
            }
        });
    }
private javax.swing.JButton jButton1;
private javax.swing.JPanel jPanel1;

そして、jPanel1の場所に設定したい-オブジェクトMyPanel

4

7 に答える 7

1

問題:MyPanelインスタンスがメインフレームに追加されていません。

MyPanel解決策:インスタンスをメインフレームのコンテンツペインに追加します。

何かのようなもの:

JFrame f  = new JFrame();
MyPanel jPanel1  = new MyPanel();
f.getContentPane().add(jPanel1  );
f.pack();
f.setVisible(true);
于 2012-05-16T17:55:28.890 に答える
1

上記の回答は正しいです。これを実際にMyPanelフレームの contentPane に追加する必要があります。

さらに、通常の AWT の代わりに Swing を使用する必要があります。コードは次のようになります。

SwingUtilities.invokeLater(new Runnable() {

        @Override //annotation if you are using Java >= 1.5
        public void run() {
            JFrame f = new JFrame();
            MyPanel jPanel1 = new MyPanel();
            f.getContentPane().add(jPanel1);
            f.pack();
            f.setVisible(true);
        }
    });
于 2012-05-16T18:03:28.860 に答える
0

フレームにパネルを追加する必要があります。

f.add(jPanel1)

次のスタンドアロンコードは私にとってはうまくいきます:

    public static void main(String[] args)
    {

        Frame f  = new Frame();
        Panel jPanel1  = new Panel();
        jPanel1.add(new Button("Hello"));
        f.add(jPanel1  );
        f.pack();
        f.setVisible(true);
    }
于 2012-05-16T17:53:15.597 に答える
0

JFrame jframe = new JFrame();

JPanel jpanel = new JPanel();

jframe.add(jpanel);

例えば:

   public Myclass extends JFrame{

   public Myclass(){

    this.setSize(300,300);

    this.add(new Mypanel());

     }

        class Mypanel extends JPanel{

                 // Add what u want to add in panel
              }


   }
于 2012-05-16T18:07:51.690 に答える
0

おそらく問題は、空の JPanel があることです。つまり、frame.add(MyPanel インスタンス) を使用する必要がありますが、(つまり、MyPanel initComponents で) add(jButton) などを使用する必要があります..

レイアウトの設定を試すこともできます

setLayout(新しい GridLayout(1, 1)); //initComponents メソッドでも。

initComponents(); の両方を表示できますか? メソッド?


編集:

Netbeans エディタを使用している場合

コンポーネントのパレットを右クリック

パレットマネージャーに移動

プロジェクト (開いているプロジェクトの場合) または jar から追加します。そこでクラスを参照して、MyPanel ファイルを探すことができます。

次に、このコンポーネントをどのフォルダまたはメニューに表示するかを選択します。

そして、一般的な JPanel のようにドラッグできるはずです。

于 2012-05-16T18:50:51.153 に答える