【问题标题】:Java add border to a label changes the label size when mouse click happens发生鼠标单击时,Java为标签添加边框会更改标签大小
【发布时间】:2016-09-07 20:34:16
【问题描述】:

我正在添加一个边框指示鼠标单击事件。我使用流布局在两个单独的标签中有两个图像。我在每个选择上都实现了鼠标单击事件。

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

问题是当单击其中一个标签时,图像(标签)位置水平和垂直移动(单击时明显)。有没有办法解决这个问题?

【问题讨论】:

    标签: java user-interface mouseevent border


    【解决方案1】:

    午休后,我想到了一个现在行之有效的解决方案,

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

    因此,解决方法是先在标签上创建一个空白边框,其大小与彩色边框相同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-28
      • 2012-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-20
      相关资源
      最近更新 更多