2

ContainerPanelを使用したカスタムJPanelクラスBorderLayoutです。SOUTHにはJPanelボタン付きが入っています。ボタンがクリックされたときに呼び出される抽象メソッドを提供するCENTER別の custom JPanel、たとえば のインスタンスにしたい。また、これをプログラムで (実行時に)AbstractPanel設定したいと考えています。JPanelこれまでのところ、次のコードでわかるように、これをすべて行うことができます (一部は NetBeans GUI ビルダーによって生成されます)。

package jpaneldemo;

import java.awt.BorderLayout;

public class ContainerPanel extends javax.swing.JPanel {

    public ContainerPanel() {
        initComponents();
    }

    public ContainerPanel(AbstractPanel abPanel) {
        initComponents();

        this.abPanel = abPanel;
        this.add(this.abPanel, BorderLayout.SOUTH);
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    private void initComponents() {

        buttonPanel = new javax.swing.JPanel();
        okButton = new javax.swing.JButton();

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

        okButton.setText("OK");
        okButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                okButtonActionPerformed(evt);
            }
        });
        buttonPanel.add(okButton);

        add(buttonPanel, java.awt.BorderLayout.PAGE_END);
    }

    private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {
        this.abPanel.abstractMethod();
    }

    // Variables declaration - do not modify
    private javax.swing.JPanel buttonPanel;
    private javax.swing.JButton okButton;
    // End of variables declaration

    private AbstractPanel abPanel = null;

}

AbstractPanelクラスも作成しました:

package jpaneldemo;

public abstract class AbstractPanel extends javax.swing.JPanel {

    public AbstractPanel() {
        initComponents();
    }

    protected abstract void abstractMethod();

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    private void initComponents() {

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 400, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 300, Short.MAX_VALUE)
        );
    }
    // Variables declaration - do not modify
    // End of variables declaration
}

AbstractPanelここで、NetBeans GUI で編集できるこのクラスのサブクラスを作成したいと考えています。通常、[プロジェクト] ウィンドウでパッケージ名を右クリックし、[新規] -> [JPanel...] に移動してカスタムJPanel. AbstractPanelNetBeansGUI ビルダーで新しいクラスを編集できるように、「新規」メニューに表示するにはどうすればよいですか? または、同じことを達成する別の方法はありますか?

4

1 に答える 1

5

パレットに追加して他のコンテナに含めることができる「テンプレート」コンポーネントを提供することが意図されている場合は、そうすることができます。

FaqFormCustomContainerBeanを読んでください

基本的な考え方 (を作成することとは別に、BeanDescriptor設計時に追加のコンテンツを追加できる、ある種の「コンテンツ」パネルを提供する必要があります。

カスタム テンプレートの提供に興味がある場合は、それは私がこれまで行ったことのないことです。

http://netbeans.org/competition/win-with-netbeans/customize-java-template.htmlを読んでみてください。少し時代遅れかもしれませんが、正しい方向に役立つかもしれません

于 2012-08-18T20:32:52.540 に答える