import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
class AddCheckBoxAction implements ActionListener {
CheckBoxPanel panel;
public AddCheckBoxAction(CheckBoxPanel panel) {
this.panel = panel;
}
@Override
public void actionPerformed(ActionEvent arg0) {
panel.addNewCheckBox();
}
}
class CheckBoxAction implements ActionListener {
int id;
CheckBoxAction(int id) {
this.id = id;
}
@Override
public void actionPerformed(ActionEvent arg0) {
System.out.println("CheckBox " + this.id + " was clicked");
}
}
class CheckBoxPanel extends JPanel {
JButton addCheckBox = new JButton("Add CheckBox");
Vector<JCheckBox> checkBoxes = new Vector<JCheckBox>();
public CheckBoxPanel() {
addCheckBox.addActionListener(new AddCheckBoxAction(this));
add(addCheckBox);
}
public void addNewCheckBox() {
JCheckBox chBox = new JCheckBox("CheckBox " + (this.checkBoxes.size() + 1));
chBox.addActionListener(new CheckBoxAction(this.checkBoxes.size() + 1));
checkBoxes.add(chBox);
add(chBox);
revalidate();
}
}
public class Main {
public static void main(String[] args) {
CheckBoxPanel chD = new CheckBoxPanel();
JFrame mainFrame = new JFrame();
JScrollPane scrollP = new JScrollPane(
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
scrollP.setViewportView(chD);
mainFrame.setSize(320, 200);
mainFrame.getContentPane().add(scrollP);
mainFrame.setVisible(true);
}
}