gpt4 book ai didi

java - BorderLayout 未将组件放置在正确的位置

转载 作者:行者123 更新时间:2023-12-01 17:33:16 25 4
gpt4 key购买 nike

我分别在 MouseEnter 和 MouseExit 上添加和删除 JButton。这工作正常,但是当按钮添加到面板时,它出现在右上角,而不是指定的 BorderLayout.SOUTH 位置。

框架只有一个 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

有人能解释一下这个问题吗?

最佳答案

调用

revalidate();
repaint();

添加/删除后。

也许最好让它可见/不可见?

关于java - BorderLayout 未将组件放置在正确的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8925944/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com