2

我有一个名为 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标签时,标签会保留并消失。我已经尝试过repaint()在网上找到的各种组合,但仍然无法删除 JLabel。

我究竟做错了什么?

4

2 回答 2

1

我很快就尝试了这个,调用 repaint() 而不是 revalidate() 对我有用。我认为标签没有消失的原因是面板没有重新粉刷。

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

于 2013-04-23T07:16:26.180 回答
0
  public void removeInfoLbl()
    {
  remove(infoLbl);
  revalidate();
  repaint();
  SetVisible(true);
 }

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

于 2013-04-23T05:44:19.070 回答