eu preciso duplicar um label quando clicado sobre ele com o mouse, eu tenho o codigo para fazer isso, entretanto gerei todo o layout do meu swing pela interface com GridBagLayout. (nao criei manualmente por linha de codigo).
Eu tenho que acessar meu container como exemplo no metodo
" public LabelListener(Container ContentPane)" abaixo descrito, mas meu GridBagLayout foi criado automaticamente pela interface, assim:
"getContentPane().setLayout(new java.awt.GridBagLayout());"
e eu eu consigo ter acesso a ele por linha de codigo, alguem tem alguma dica de como fazer isso.
este seria o codigo se eu nao tivesse criado o layout autmaticamente pela interface
class LabelListener extends MouseAdapter {
private final Random rand = new Random();
private final Container ContentPane;
public LabelListener(Container ContentPane) {
this.ContentPane = ContentPane;
}
public void mouseClicked(java.awt.event.MouseEvent evt) {
if (evt.getClickCount() == 2) {
JLabel l = new JLabel(“Label”);
jLabel3.addMouseListener(this);
jLabel3.addMouseListener(new LabelListener(ContentPane));
this.ContentPane.add(jLabel3);
Dimension cs = this.ContentPane.getSize(); //tamanho do container
Dimension ls = jLabel3.getPreferredSize(); // tamanho ideal da label
int x = this.rand.nextInt(cs.width - ls.width); //posicao aleatoria para a nova label
int y = this.rand.nextInt(cs.height - ls.height); //posicao aleatoria para a nova label
jLabel3.setSize(50); //setando manualmente o tamanho da label
jLabel3.setLocation(100, 500); //posicionando manualmente
jLabel3.revalidate();
}
}
}