Swing:JPanel中的JLabel一行一行,宽度=内容宽度

时间:2017-06-17 11:39:08

标签: java swing

我有一个JPanel,我希望通过以下方式添加多个JLabel

  • 只有一个JLabel被放置在一行上(下一个JLabel位于前一行之下)

  • 每个JLabel只占用最小可能宽度(即其内容的宽度);我需要这个,因为我在JLabel上有鼠标点击监听器,当用户点击JLabel附近某处时,我不希望它们被触发。

我试着这样做:

myPanel.setLayout(new BoxLayout(myPanel, BoxLayout.Y_AXIS));
myPanel.add(new JLabel("label1"));
myPanel.add(new JLabel("label2"));

但是通过这样的实现,我不仅可以点击JLabel本身(即它的文本),而且还可以点击它附近,鼠标监听器仍会被触发。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

  

我需要这个,因为我在JLabels上有鼠标点击监听器

另一种方法是使用JButton,因此您不需要添加自定义事件处理。

然后你可以使用:

button.setBorderPainted( false );
button.setContentAreaFilled( false );
button.setOpaque( false );

,按钮看起来像一个标签。但是,您只需将ActionListener添加到按钮以进行正常的事件处理。