Как я могу добавить метку на панель внутри прослушивателя действий кнопки?

#java #swing #jpanel #jbutton #actionlistener

Вопрос:

Я хочу, чтобы при нажатии на кнопку она добавляла метку на панель. Снаружи прослушиватель действий работает нормально, но внутри ничего не делает, ни кода ошибки, ни чего-либо еще. (Некоторые части кода отсутствуют, я удалил, потому что думаю, что это не имеет отношения к делу)

 JPanel panel1 = new JPanel(); panel1.setBorder(new LineBorder(new Color(0, 0, 0), 2, true)); panel1.setBounds(60, 80, 128, 128); frmmain.getContentPane().add(panel1);  JLabel label1 = new JLabel ();  JButton btnTest = new JButton("Test"); btnTest.setFont(new Font("Bahnschrift", Font.PLAIN, 21)); btnTest.setBounds(240, 367, 121, 57);  btnTest.addActionListener(new ActionListener() {  public void actionPerformed(ActionEvent e) {  try   {  panel1.add(label1);    }  catch (Exception e2)   {  System.err.println(e2);  }  }  });  

Комментарии:

1. попробуйте panel.revalidate() и panel1.перекрасить() после добавления метки. Когда вы добавляете компоненты, пока они видны, перекраска/повторная проверка всегда является хорошей идеей, независимо от того, видны эти новые компоненты или нет.

2. Кроме того, избегайте использования setBounds метода для любого компонента. Панели должны использовать менеджеры компоновки, а пользовательский интерфейс должен создаваться менеджерами компоновки. Жесткое кодирование setBounds — плохая идея. Ваш пользовательский интерфейс не будет «работать» при разных размерах/разрешениях экрана.

3. Спасибо, что это сработало. Да, я знаю, что такое setbounds, мне нужно изучить другие макеты на java. (Я знаю только абсолютное)