Вам нужно перекрасить () / проверить () вашу панель после динамического добавления в нее новых компонентов. Итак, после этого:
magnet.add(codeLabel);
добавить это:
magnet.validate();
или
magnet.repaint();
Также одна вещь, которую вы используете нулевой макет для магнитной панели. Поэтому необходимо добавить setBounds () из jLable, прежде чем добавлять его на панель магнита. Так становится
public void actionPerformed(ActionEvent e) {
codeLabel=new JLabel(area4Label.getText());
codeLabel.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
codeLabel.setBounds(50, 20, 100, 100);
magnet.add(codeLabel);
magnet.repaint();
area4Label.setText("");
}
Не рекомендуется использовать null
в качестве макета, вы должны использовать правильный макет, такой как BorderLayout или GridLayout или даже более простой FlowLayout в зависимости от ваших требований.
Как сказал @Andrew, используйте что-то вроде:
codeLabel.setSize(codeLabel.getPreferredSize());
codeLabel.setLocation(50, 20);
вместо
codeLabel.setBounds(50, 20, 100, 100);
Это решит проблему размера jLabel.