java - Swing:JPanel中的JLabels一对一宽度=内容宽度

标签 java swing

我有一个 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/

相关文章:

java - Jar 未加载资源文件

Java servlet、JSP - 更改 DIV 的内容

java - 如何使用 arraylist 将数据存储在 JTable 的预定义默认表模型中

java - 无法在 linux 服务器上第二次获得 JDialog 中使用的 JTextField 的焦点

java - 显示列表后如何删除方括号?

java - 如何为 Java 创建 Kotlin 静态变量和函数?

java - 如何从另一个 JPanel/JFrame/etc 添加 String JList 元素?

java - 在按钮单击时添加 JTextFields

java - 这个 Java 小部件的名称是什么?

java - 将行分割为单词数组