How To - Dynamically Generate Components
Description:
You can dynamically create virtually every component in Java.
Dynamically Create a JButton
buttonGenerator.java
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextArea;
public class buttonGenerator {
// A Dynamic JButton Generator
public void generateButton(JPanel jPanel, JButton existingButton, String text, String buttonName) {
JButton newButton = new JButton(buttonName); // Setting the new Buttons' name
newButton.setText(text); // Setting Button Text
/* Adding Button to JPanel - Make sure that this is done before
setting bounds or the your initialization will be delayed */
jPanel.add(newButton);
// .setBounds() specifies the position and size of the component
newButton.setBounds(existingButton.getX(), existingButton.getWidth(), existingButton.getY(), existingButton.getHeight());
jPanel.validate(); // Validating the addition of the new button to the JPanel.
// Adding an ActionListener to the newly created button. This allows you to add code to perform "actions" once the button is clicked.
newButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "Hey there");
}
});
}
}
Implementation in a JFrame Generated Manually By Netbeans:
JFrameGUI.java
import javax.swing.JButton;
public class JFrameGUI extends javax.swing.JFrame {
public JFrameGUI() {
initComponents();
}
@SuppressWarnings("unchecked")
//
private void initComponents() {
// Code from Components created by Netbeans goes ere
}
private void btnCreateActionPerformed(java.awt.event.ActionEvent evt) {
buttonGenerator gen = new buttonGenerator();
gen.generateButton(jPanel, btnCreate, "Click Me", "myButtonName", txaOutput);
}
public static void main(String args[]) {
/* Set the Nimbus look and feel */
// GUI generated code by Netbeans goes here
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new JFrameGUI().setVisible(true);
}
});
}
// Variables declaration by Netbeans goes here
}
java_strings.htm