【问题标题】:Add multiple jlabel on jpanel and on same line using box layout使用框布局在 jpanel 和同一行上添加多个 jlabel
【发布时间】:2014-01-02 14:07:11
【问题描述】:

想要在 jpanel 的同一行添加两个带有一些空间的 jlabel,japnel 布局设置为框布局,由于某些限制,我无法将布局更改为另一个布局,并且框布局的属性从 Y_AXIS 到 LINE_AXIS,所以请提供我有一些解决方案,所以我可以将 jlabel 放在同一行..

contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.Y_AXIS));

所以请让我知道上述相同的解决方案。

【问题讨论】:

  • 为什么不能换轴?为什么会有这些限制?没有意义

标签: java swing jpanel jlabel


【解决方案1】:

使用Border 布局将您的标签包装在JPanel 中。将一个添加到 West 面板,将另一个添加到 East 面板。根据需要设置JLabels 的对齐方式。然后将JPanel 添加到您的盒子布局中。

【讨论】:

    【解决方案2】:

    您似乎认为您无法更改布局,因为您正在处理 JFrame 的内容窗格并且您不想更改窗口的其余部分。

    如果是这种情况,您可以通过将两个 JLabel 添加到单独的 JPanel(我们称之为 labelPanel)并将其添加到内容窗格来使用嵌套布局。它看起来像这样:

    JPanel labelPanel = new JPanel();
    labelPanel.setLayout(new BoxLayout(labelPanel, BoxLayout.X_AXIS));
    labelPanel.add(leftLabel);
    labelPanel.add(Box.createGlue()); //creates space between the JLabels
    labelPanel.add(rightLabel);
    
    contentPane.add(labelPanel);
    

    【讨论】:

      【解决方案3】:

      试试这个:JPanelGridLayoutJLabels 左右对齐。框架是一个盒子仍然使用一个盒子。你应该感兴趣的是JPanel panel 代码。这就是我添加标签的地方。您所要做的就是嵌套组件和布局

      import java.awt.*;
      import javax.swing.*;
      import javax.swing.border.LineBorder;
      
      public class TwoLabels extends JFrame{
      
          public TwoLabels(){
              Box box = Box.createVerticalBox();
      
              JPanel panel = new JPanel(new GridLayout(1, 2));
              panel.setBorder(new LineBorder(Color.black));
      
              JLabel label1 = new JLabel("Hello");
              JLabel label2 = new JLabel("World");
              label1.setHorizontalAlignment(JLabel.LEADING);
              label2.setHorizontalAlignment(JLabel.TRAILING);
              panel.add(label1);
              panel.add(label2);
      
              box.add(new JPanel(){
                  public Dimension getPreferredSize(){
                      return new Dimension(300, 300);
                  }
              });
              box.add(panel);
      
              add(box);
              setDefaultCloseOperation(EXIT_ON_CLOSE);
              pack();
              setVisible(true);
          }
      
          public static void main(String[] args) {
              new TwoLabels();
      
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-03
        • 1970-01-01
        • 2023-03-18
        • 1970-01-01
        • 1970-01-01
        • 2023-03-12
        相关资源
        最近更新 更多