【问题标题】:Java: How do I move a JLabel to the center of a JPanel?Java:如何将 JLabel 移动到 JPanel 的中心?
【发布时间】:2013-11-09 13:23:55
【问题描述】:

所以在我的 GUI 中,我有一个 JFrame,它是一个边框布局。 NORTH 和 WEST 有一个菜单栏和一些 GUI 内容。在 CENTER 中,有一个 JLabel。我希望它移动到 JPanel 的中心(水平和垂直)。我该如何正确地做到这一点?我尝试了盒子布局和网格布局。一个要求是我不能使用 gridbag 布局。

public class NewClass extends JFrame{
    public NewClass () {
        setVisible(true);
        setSize(500,500);
        setDefaultCloseOperation (EXIT_ON_CLOSE);

//menubar
        JMenuBar bar = new JMenuBar();
        JMenu editMenu = new JMenu("Edit");
        JMenuItem mItem = new JMenuItem("Cut"); // edit->cut
        editMenu.add(mItem);
        mItem = new JMenuItem("Copy"); // edit->copy
        editMenu.add(mItem);
        mItem = new JMenuItem("Paste"); // edit->paste
        editMenu.add(mItem);
        bar.add(editMenu);
        this.setJMenuBar(bar);

//north panel
        JPanel topPanel = new JPanel();
        this.add(topPanel,BorderLayout.NORTH);
        JLabel myLabel = new JLabel ("Label:") ;
        topPanel.add(myLabel);
        JButton mytopButton = new JButton ("Push Me");
        topPanel.add(mytopButton);

//left panel
        JPanel leftPanel = new JPanel();
        leftPanel.setBorder (new TitledBorder("Commands:"));
        leftPanel.setLayout (new GridLayout (10,1));
        this.add(leftPanel,BorderLayout.WEST);
        JButton myLeftButton1 = new JButton ("Button 1");
        leftPanel.add(myLeftButton1);
        JButton myLeftButton2 = new JButton ("Button 2");
        leftPanel.add(myLeftButton2);
        JButton myLeftButton3 = new JButton ("Button3");
        leftPanel.add(myLeftButton3);

//center panel
        JPanel centerPanel = new JPanel();
        this.add(centerPanel,BorderLayout.CENTER);
        JLabel mapLabel = new JLabel("Test_String"); //move this to center of JPanel
        centerPanel.add(mapLabel);
        centerPanel.setBorder (new EtchedBorder(Color.black,Color.black));
        centerPanel.setBackground (Color.white);
    }
}

【问题讨论】:

  • 另请参阅this answer 以了解右手两种布局(使组件居中)。

标签: java swing user-interface jframe jpanel


【解决方案1】:

检查影响组件alignment的方法的API。

有些方法会影响布局管理器中组件的对齐方式,而其他方法会影响标签本身内文本的对齐方式。

【讨论】:

    【解决方案2】:

    【讨论】:

      【解决方案3】:

      回答。谢谢大家。

          JPanel centerPanel = new JPanel();
          centerPanel.setLayout (new GridLayout ()); //added
          this.add(centerPanel,BorderLayout.CENTER);
          JLabel mapLabel = new JLabel("Test_String");
          mapLabel.setHorizontalAlignment(SwingConstants.CENTER); //added
          mapLabel.setVerticalAlignment(SwingConstants.CENTER); //added
          centerPanel.add(mapLabel);
          centerPanel.setBorder (new EtchedBorder(Color.black,Color.black));
          centerPanel.setBackground (Color.white);
      

      【讨论】:

      • 那么您应该接受导致您使用 setHorizo​​ntalAlignment 和 setVerticalAlignment 方法的答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多