【发布时间】:2012-02-14 02:32:02
【问题描述】:
我分别在 MouseEnter 和 MouseExit 上添加和删除 JButton。这工作正常,但是当按钮添加到面板时,它会显示在右上角,而不是指定的 BorderLayout.SOUTH 位置。
Frame只有一个JPanel,我添加的唯一一行是
jPanel1.addMouseListener(new myMouseListener(jPanel1));
鼠标监听器
package example;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JButton;
import javax.swing.JPanel;
public class myMouseListener extends MouseAdapter{
JButton btn;
JPanel panel;
public myMouseListener(JPanel panel)
{
this.panel = panel;
this.btn = new JButton("Test");
this.btn.setSize(40, 40);
}
public void mouseEntered(MouseEvent e) {
panel.setBackground(Color.red);
panel.add(btn, BorderLayout.SOUTH);
}
public void mouseExited(MouseEvent e) {
panel.setBackground(Color.blue);
panel.remove(btn);
}
}
您可以在此处下载 sscce
http://www.filehosting.org/file/details/302851/Example.zip
谁能解释一下这个问题?
【问题讨论】:
-
您确定在您的
JPanel中使用BorderLayout吗? -
不要粘贴源代码的链接。发布您的代码,以便任何人都可以提出建议。
-
请学习java命名约定并遵守它们
-
不相关:删除 btn.setSize(..),这是不必要的混乱(没有任何影响)
-
@AshBurlaczenko 该 zip 被列为
122.0 kB。 SSCCE 应该少于 200 行代码(有人会说更短)。因此,我可以得出结论,(压缩后)达到 122 KB 的源是 不是 S 或不是 SC! 请阅读人们提供的链接,以后。 -1
标签: java swing layout-manager mouselistener