我正在努力添加边框表示鼠标点击事件。我使用流程布局在两个单独的标签中有两个图像。我已经对每个选项实现了鼠标点击事件。
当我单击标签1时,会创建蓝色边框,标签2边框(如果选择了另一个标签)将变为空边框。反过来也是如此。
label1.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){
if(label2Selected == true){
label2Selected = false;
label2.setBorder(BorderFactory.createEmptyBorder());
label2.setBackground(defaultColor);
}
label1Selected = true;
LineBorder border = new LineBorder(Color.blue, 5, true);
label1.setBorder(border);
label1.setBackground(Color.blue);
label1.setOpaque(true);
}
});
问题是当单击其中一个标签时,图像(标签)位置水平和垂直移动(单击时会显着)。有什么方法可以解决这个问题吗?
答案 0 :(得分:0)
午休后,我想到了一个现在运作良好的解决方案,
EmptyBorder emptyBorder = new EmptyBorder(5, 5, 5, 5);
label1.setBorder(emptyBoder);
label1.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){
if(label2Selected == true){
label2Selected = false;
label2.setBorder(emptyBorder);
label2.setBackground(defaultColor);
}
label1Selected = true;
LineBorder border = new LineBorder(Color.blue, 5, true);
label1.setBorder(border);
label1.setBackground(Color.blue);
label1.setOpaque(true);
}
});
因此,解决方法是首先在标签上创建一个带有彩色边框大小的空边框。