我有一个 JPanel
,我想通过以下方式添加几个 JLabel
:
一行中仅放置一个
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
本身(即它的文本),而且可以单击它附近的某个位置,并且鼠标监听器仍然会被触发。
我做错了什么?
最佳答案
I need this because I have mouse click listeners on JLabels
另一种方法是使用 JButton,这样您就不需要添加自定义事件处理。
然后你可以使用:
button.setBorderPainted( false );
button.setContentAreaFilled( false );
button.setOpaque( false );
按钮看起来像一个标签。但随后您只需向按钮添加一个 ActionListener 即可进行正常事件处理。
关于java - Swing:JPanel中的JLabels一对一宽度=内容宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44604169/