我有一个名为LMSPanel的类扩展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
时,Label会保留并且确实消失。我已经尝试了repaint()
以及我在网上发现的各种组合,但仍然无法移除JLabel。
我做错了什么?
答案 0 :(得分:1)
我刚刚尝试了这个,并且调用repaint()而不是revalidate()对我有效。我认为标签不会消失的原因是面板没有重新粉刷。
如果你总是要显示一个标签,为什么不像Andrew Thompson建议的那样使用setText()。
答案 1 :(得分:0)
public void removeInfoLbl()
{
remove(infoLbl);
revalidate();
repaint();
SetVisible(true);
}
SetVisbile(true)这将显示您当前可用的视图.. 所以试试吧..