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
. AbstractPanel
NetBeansGUI ビルダーで新しいクラスを編集できるように、「新規」メニューに表示するにはどうすればよいですか? または、同じことを達成する別の方法はありますか?