我有一个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)。 –