我有一個JFrame
。當我點擊框架時,我想添加一個Component
(在這種情況下是Canvas
的擴展名)。我添加了一個MouseListener
到幀如下:爲什麼我不能使用MouseListener將組件添加到JFrame?
frame.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
frame.add(canvas);
frame.repaint();
}
});
然而,當點擊了幀鼠標上的部件不會被添加。在我的主要方法中添加組件沒有問題。在鼠標偵聽器中添加打印語句正確打印,正如從框架中刪除組件一樣。
什麼是佈局?'revalidate()'也需要 –
嘗試在重繪之前添加'frame.pack()'。 – sprinter
使用['CardLayout'](http://download.oracle.com/javase/8/docs/api/java/awt/CardLayout.html)如[本答案]中所示(http://stackoverflow.com /一個/418556分之5786005)。 –