在JCheckBox中有一个左右对齐标签

Lee*_*Lee 12 java swing jcheckbox

我将从我想要的东西开始然后从那里开始:

+------------------------------------------+
|[] jCheckBox                       jLabel |
+------------------------------------------+
Run Code Online (Sandbox Code Playgroud)

基本上我想有一个JCheckBox2段文本,1个左对齐和1个右对齐.我希望整个盒子都是可点击的,并且行为完全像JCheckBox(如果我按下鼠标,它会突出显示盒子等).

现在我试过了:

  • 使用HTML文本框内部,沿行的表:<html><table width=100%><tr width=100%><td>Left Text</td><td align=right>Right Text</td></tr></table>.这产生[] Left TextRightText没有任何视觉对齐.

  • 添加JCheckBoxJLabel面板,但这需要我实现所有鼠标事件并调用正确的相应方法JCheckBox.我把它放在一边 - 但是如果这是唯一的选择,我愿意重新考虑

  • 将JLabel添加到JCheckBox

    • 首先,这导致JCheckBox决定更改字体,因此必须"调整"
    • 其次,基线偏离了1或2个像素,这是通过实现放置JLabel在基线上的LayoutManager来解决的.
    • 第三,JLabelJCheckBox文本重叠,所以我广告调整我的布局管理器,但是JCheckBox没有从getPreferedSize()(的[1,1])给出正确的结果.

所以,基本上我的问题是:我该如何实现呢?

mKo*_*bel 4

  • 创建父级JLabelJLabel还没有实现任何LayoutManager,然后要在那里设置正确的LayoutManager,我认为 GridLayout( with 2 segments of text, 1 left aligned and 1 right aligned)

  • 添加两个JLabels并正确对齐 ( JLabel.setHorizontalAlignment(javax.swing.SwingConstants.XXX);)

  • JCheckBox与父项放在一起JLabel( JLabel.setLabelFor(JCheckBox);)

  • JLabel 中的 MultiIcon的方式相同