如何强制Jcomponent出现在Java中?

时间:2016-09-23 22:56:39

标签: java paint repaint

如果我有一个动态添加JLabel的监听器,有没有办法强制组件立即出现?

我正在开发一个项目,我有一个存储每个动态添加标签的ArrayList。我有另一种方法,涉及在面板上画一条线。它取决于新的JLabel位置(x和y)。这是我的监听器中的代码:

panel.add(labelArrayList.get(index));
panel.repaint();
panel.revalidate();

drawLine();

其中drawLine()是一种只在面板上绘制一条线的方法。

private void drawLine(){
    /*Draw from (x1,y1) to (x2,y2), where (x1,y1) is fixed at original and (x2,y2) is the location of the newly added JLabel*/
    graphics2d.drawLine(x1, y1, x2, y2);
}

当我处于调试模式时,我看到在调用repaint()和revalidate()之后没有添加该项。因此,我无法获取新添加的Label的位置。调用drawLines()方法后出现新的JLabel。

我希望在调用drawLine()之前添加新标签。有没有办法让它发挥作用?

1 个答案:

答案 0 :(得分:0)

拨打doLayout()(而非repaint()revalidate())即可。