以编程方式添加后无法从JPanel中删除JLabel

时间:2013-04-23 04:39:27

标签: java swing jpanel jlabel

我有一个名为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。

我做错了什么?

2 个答案:

答案 0 :(得分:1)

我刚刚尝试了这个,并且调用repaint()而不是rev​​alidate()对我有效。我认为标签不会消失的原因是面板没有重新粉刷。

如果你总是要显示一个标签,为什么不像Andrew Thompson建议的那样使用setText()。

答案 1 :(得分:0)

  public void removeInfoLbl()
    {
  remove(infoLbl);
  revalidate();
  repaint();
  SetVisible(true);
 }

SetVisbile(true)这将显示您当前可用的视图.. 所以试试吧..