在绘画之前使用html获取正确大小的JLabel

时间:2013-09-20 12:26:49

标签: java html swing

我在JLabel中遇到HTML渲染问题。我不太确定会发生什么,但是当我第一次调用setFadedVisible时,似乎它会计算出未呈现html的大小,绘制它,渲染html,重新计算并重新绘制agian。在重新正确重新绘制之前,我只能看到错误尺寸的短暂一瞥,但它足以令人生气。当我在文本标签中放入非HTML文本时,它不会发生(因为我猜是单行)。你能帮我解决这个问题吗?

public class LevelEndLayeredPane extends FadedLayer {
    ...

    private void showMessageAndSetVisible(String mes) {
        mes = mes.replaceAll("\n", "<br>");
        mes = "<html><center>" + mes + "</center></html>";
        textLabel.setText(mes);
        setFadedVisible(true);
    }
    ...
}


public class FadedLayer extends JLayeredPane{

private JComponent fadedLayer;
private JComponent groundLayer;
private JComponent topLayer;

public FadedLayer(JComponent groundLayer) {
    setLayout(new OverlayLayout(this));
    setOpaque(false);
    createFadedLayer();
    add(groundLayer, Integer.valueOf(0));
    add(fadedLayer, Integer.valueOf(1));
    fadedLayer.setVisible(false);
}

public FadedLayer(JComponent groundLayer, JComponent topLayer) {
    this(groundLayer);
    setTopLayer(topLayer);
}

public void setFadedVisible(boolean show){
    fadedLayer.setVisible(show);
}

public boolean isFadedVisible() {
    return fadedLayer.isVisible();
}
...

}

0 个答案:

没有答案