Grazie per la risposta repentina,
ho modificato il codice e ora funziona però mi solleva delle eccezioni nelle classi awt native, per esempio:
***************
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: adding container's parent to itself
at java.awt.Container.checkAddToSelf(Container.java:4 72)
at java.awt.Container.addImpl(Container.java:1083)
at java.awt.Container.add(Container.java:998)
[...]
****************
codice:
package provajlabel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class ProvaJLabel {
public static void main(String[] args) {
final JFrame f = new JFrame("Rubrica");
f.setSize(400, 400);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JMenuBar mb = new JMenuBar(); //creo la menu bar
JMenu m = new JMenu("Contatti"); //creo la voce contatti
JMenuItem mi1 = new JMenuItem("Aggiungi"); //creo le varie voci del menu contatti
class Listener implements ActionListener{
JMenuItem mi;
public Listener(JMenuItem mi1){
mi = mi1;
}
@Override
public void actionPerformed(ActionEvent e){
JMenuItem source = (JMenuItem) e.getSource();
if (source.equals(mi)){
JButton btn = new JButton("CLICK");
JLabel lbl = new JLabel();
lbl.setText("CIAO");
Container scatola = f.getContentPane();
FlowLayout flow = new FlowLayout();
scatola.setLayout(flow);
scatola.add(lbl);
scatola.add(btn);
scatola.validate();
f.add(scatola);
}
}
}
Listener listener = new Listener(mi1);
mi1.addActionListener(listener);
m.add(mi1);
mb.add(m);
f.setJMenuBar(mb);
f.setVisible(true);
}
}