Если у меня есть слушатель, который динамически добавляет JLabel, есть ли способ заставить компонент появиться сразу?Как заставить Jcomponent появиться на Java?
Я работаю над проектом, у которого есть ArrayList, хранящий каждую динамически добавленную метку. У меня есть другой метод, который включает в себя рисование строки на панели. Это зависит от нового местоположения JLabel (x и y). Вот код внутри моего слушателя:
panel.add(labelArrayList.get(index));
panel.repaint();
panel.revalidate();
drawLine();
где DrawLine() представляет собой метод, который просто рисует одну строку на панели.
private void drawLine(){
/*Draw from (x1,y1) to (x2,y2), where (x1,y1) is fixed at original and (x2,y2) is the location of the newly added JLabel*/
graphics2d.drawLine(x1, y1, x2, y2);
}
Когда я был в режиме отладки, я увидел, что элемент не добавляется после перекраски() и перепроверить() называется. Поэтому я не могу получить местоположение недавно добавленной метки. Новый JLabel появляется после вызова метода drawLines().
Я хочу добавить новую метку до вызова drawLine(). Есть ли способ заставить его работать?
Этот код находится в слушателе? Честно говоря, прямолинейно нарисовать линию в слушателе, если честно, такие вещи обычно бывают в методе paintComponent(). Ваша основная проблема может быть более связана с тем, что вы не делаете что-то вроде Swing. – Gimby