当鼠标单击发生时,Java为标签添加边框会更改标签大小

时间:2016-09-07 20:34:17

标签: java user-interface mouseevent border

我正在努力添加边框表示鼠标点击事件。我使用流程布局在两个单独的标签中有两个图像。我已经对每个选项实现了鼠标点击事件。

当我单击标签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);
    }
});

问题是当单击其中一个标签时,图像(标签)位置水平和垂直移动(单击时会显着)。有什么方法可以解决这个问题吗?

1 个答案:

答案 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);
    }
});

因此,解决方法是首先在标签上创建一个带有彩色边框大小的空边框。