ボタンをクリックするたびに新しい JPanel を作成し、パネル上にオブジェクト (ボタンやラベル) も作成したいと思います。その部分は技術的には機能しているようですが、パネルを (最後に追加されたものから最初に) 1 つずつ削除しようとすると問題が発生します。
未使用の配列を残しましたが、コードを可能な限り削減しようとしました。アドバイスをいただければ幸いです。また、何か曖昧すぎる場合はお知らせください。私の質問を言語化しようとすると、思ったよりも困難でした。
免責事項: 少なくともいくつかのベスト プラクティスが無視されています。申し訳ありません。
public class CreatePanelsTest{
JPanel totalGUI;
GridLayout grid = new GridLayout(0,1);
int panelX = 10;
public JPanel createContentPane (){
//create a bottom JPanel to place everything on.
totalGUI = new JPanel();
//set the Layout Manager to null, manually place objects
totalGUI.setLayout(null);
JPanel controlPanel = new JPanel();
controlPanel.setLocation(50, 220);
controlPanel.setSize(200, 40);
JButton addSet = new JButton("add set");
addSet.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent evt) {
newSetActionPerformed(evt);
}
});
JButton removeSet = new JButton("remove set");
removeSet.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent evt) {
removeSetActionPerformed(evt);
}
});
controlPanel.add(addSet);
controlPanel.add(removeSet);
totalGUI.add(controlPanel);
totalGUI.revalidate();
return totalGUI;
}
private void newSetActionPerformed(java.awt.event.ActionEvent evt) {
//on button click adds group
JPanel newPanel = new JPanel(grid);
newPanel.setLocation(panelX, 10);
newPanel.setSize(50,200);
JButton button1 = new JButton("1");
JButton button2 = new JButton("2");
newPanel.add(button1);
newPanel.add(button2);
totalGUI.add(newPanel);
totalGUI.validate();
totalGUI.repaint();
panelX = panelX+50;
}
private void removeSetActionPerformed(java.awt.event.ActionEvent evt) {
//this is suppose to remove one panel at a time
//totalGUI.remove(newPanel);
//totalGUI.validate();
//totalGUI.repaint();
//panelX = panelX-50;
}
public JPanel[] autoArray(){
//was hoping to make this method work for me, unused atm
int n = 6;
//can i change the value of "n" later or will it break stuff?
JPanel[] panels = new JPanel[n];
for (int i = 0; i<n; i++){
panels[i] = new JPanel(grid);
}
return panels;
}