Java Swing:JPanel one中的JLabels位于行中,宽度=内容宽度
我有一个JPanel,我想通过以下方式添加几个JLabel: 只有一个JLabel放置在一行上,下一个JLabel放置在上一行的下方 每个JLabel仅获取最小可能宽度,即其内容的宽度;我需要这个,因为我在JLabel上有鼠标单击侦听器,我不希望当用户单击JLabel附近的某个地方时触发它们 我试着这样做:Java Swing:JPanel one中的JLabels位于行中,宽度=内容宽度,java,swing,Java,Swing,我有一个JPanel,我想通过以下方式添加几个JLabel: 只有一个JLabel放置在一行上,下一个JLabel放置在上一行的下方 每个JLabel仅获取最小可能宽度,即其内容的宽度;我需要这个,因为我在JLabel上有鼠标单击侦听器,我不希望当用户单击JLabel附近的某个地方时触发它们 我试着这样做: myPanel.setLayout(new BoxLayout(myPanel, BoxLayout.Y_AXIS)); myPanel.add(new JLabel("label1"));
myPanel.setLayout(new BoxLayout(myPanel, BoxLayout.Y_AXIS));
myPanel.add(new JLabel("label1"));
myPanel.add(new JLabel("label2"));
但有了这样的实现,我不仅可以点击JLabel本身,即它的文本,还可以点击它附近的某个地方,鼠标侦听器仍然会被触发
我做错了什么
我需要这个,因为我在jlabel上有鼠标单击侦听器
另一种方法是使用JButton,这样就不需要添加自定义事件处理
然后您可以使用:
button.setBorderPainted( false );
button.setContentAreaFilled( false );
button.setOpaque( false );
按钮看起来就像一个标签。但是,您只需向按钮添加一个ActionListener以进行正常的事件处理。如果将每个JLabel放入自己的JPanel中,例如myPanel.addnew JPanel{{addnew JLabellabel1;};但为了获得更好的帮助,请创建并发布您的@HovercraftFullOfEels。我没想到您会推荐这种有时被称为双括号初始化的瘟疫。我所看到的所有这些都为实现这一目标提供了干净的方法。但当没有足够的空间时,情况就是这样。TODO:在这里插入一些关于费马最后一个定理的极客参考;-。所以@coolguy:你不应该使用这个{{double brake}}的东西。无论如何,发布一个新的帖子的建议仍然有效。您正在寻找的行为应该是默认行为。如果您观察到不同的行为,那么这一定是由代码的其他部分引起的。。。。