0
如果我有一個動態添加JLabel的偵聽器,是否有辦法強制組件立即出現?如何強制Jcomponent出現在Java中?
我正在一個項目,我有一個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()後沒有添加該項目。因此,我無法獲取新添加的標籤的位置。在調用drawLines()方法後出現新的JLabel。
我希望在調用drawLine()之前添加新標籤。有什麼辦法可以使它工作嗎?
此代碼位於監聽器中?老實說,在一個監聽器中直接畫一條線是很奇怪的,這種情況通常發生在paintComponent()方法中。你的主要問題可能更多地與不採取Swing方式的事情有關。 – Gimby