如标题中所述,我有一个JButton,单击该按钮时我想为其添加边框。探查是,当我尝试添加该边框时,它完全弄乱了我拥有的另一个JPanel,并重新放置了所有内容在上面。 这是我的mouseClicked的代码:
b.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent ev) {
if (ev.getClickCount() == 2) {
Object source = ev.getSource();
Border border;
if (source instanceof JButton) {
border = BorderFactory.createEmptyBorder();
((JButton)source).setBorder(border);
System.out.println("Double clicked");
}
} else if (ev.getClickCount() == 1) {
Object source = ev.getSource();
Border border;
if(source instanceof JButton){
border = BorderFactory.createLineBorder(Color.red);
((JButton)source).setBorder(border);
System.out.println("Clicked");
}
}
}
});
另外,如您所知,当我双击按钮时,我删除了无聊的内容。
*更多信息:我尝试删除((JButton)source).setBorder(border);
命令,没有它似乎没有任何问题。
任何帮助将不胜感激。
答案 0 :(得分:2)
该问题是,当我尝试添加该边框时,它完全弄乱了另一个JPanel
border = BorderFactory.createLineBorder(Color.red);
这会创建一个边框,其线条粗细为1,我猜。
border = BorderFactory.createEmptyBorder();
这将创建一个线宽为0的边框。
因此,更改边框会导致按钮的大小改变,从而影响布局。
相反,您应该使用:
border = BorderFactory.createEmptyBorder(1, 1, 1, 1);
这将使按钮的大小保持不变,因此不会引起布局问题。但是,此边框也应该是按钮的默认边框。