2

JPanel を拡張する LMSPanel というクラスがあります。このクラスには、次の 2 つのメソッドがあります。

/**
 * 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

これをすぐに試してみたところ、 revalidate() の代わりに repaint() を呼び出すとうまくいきました。ラベルが消えない理由は、パネルが塗り直されていないからだと思います。

常に 1 つのラベルだけを表示する場合は、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 に答える