У меня есть класс LMSPanel, который расширяет JPanel. Этот класс имеет два следующих методов:Невозможно удалить JLabel из JPanel после добавления программно
/**
* A method to add an informative temporary label to the Panel until
* the second Sensor is added.
*
* @param zoneid - The ID of the Zone.
* @param sensorid - The ID of the Sensor.
*/
public void justAddedLbl(String zoneid, String sensorid)
{
infoLbl = new JLabel("Sensor: " + zoneid + sensorid + " added. Please Add 2nd Sensor.");
add(infoLbl);
revalidate();
}
/**
* A method to remove the temporary informative label.
* Only called when second sensor has been added.
*/
public void removeInfoLbl()
{
remove(infoLbl);
revalidate();
}
Метод добавления работает отлично, но когда я пытаюсь вызвать removeInfoLbl
Метку остается и не уходит. Я пробовал repaint()
и всевозможные комбинации, которые я нашел онлайн, и я до сих пор не могу удалить JLabel.
Что я делаю неправильно?
Похоже, у вас есть справочные вопросы. При вызове 'justAddedLbl' вы создаете новый ярлык, а это значит, что если он вызывается более одного раза, вы будете иметь ссылку только на последнюю добавленную метку. Из фрагмента невозможно точно знать – MadProgrammer
* «Невозможно удалить JLabel» * Почему бы просто не просто label.setText (""); '? –
@MadProgrammer Это то, что я тоже думал, но каждый метод получает только один раз для каждого LMSPanel. Поэтому я сначала вызываю 'justAddedLbl()', затем я всегда вызываю 'removeInfoLbl()' сразу после. И 'infoLbl' является частным полем типа JLabel. – Ciwan