代码之家  ›  专栏  ›  技术社区  ›  Elinoter99

在JFrame上定位两个面板[重复]

  •  0
  • Elinoter99  · 技术社区  · 7 年前

    我试图得到这样的输出(使用Netbeans designer设计),其中我需要通过代码进行实际设计:

    enter image description here

    其中 JFrame 应该是这样的:

    enter image description here

     JFrame frame = new JFrame("Horizontal Histogram");
        frame.setVisible(true);
        frame.setSize(400, 300);
        frame.setResizable(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
        JPanel panel = new JPanel();
        panel.setLayout(new GridLayout(5, 1));
        panel.setBorder(new EmptyBorder(10, 10, 10, 10));
        frame.add(panel);
    
        JPanel panel_2 = new JPanel();
         panel_2.setLayout(new GridLayout(5, 1));
         panel_2.setBorder(new EmptyBorder(10, 10, 10, 10));
         frame.add(panel_2);
    
        JLabel label_1 = new JLabel("0-29");
        JLabel label_2 = new JLabel("30-39");
        JLabel label_3 = new JLabel("40-69");
        JLabel label_4 = new JLabel("70-100");
    
        JLabel stats_1 = new JLabel();  //number of stars
        JLabel stats_2 = new JLabel();
        JLabel stats_3 = new JLabel();
        JLabel stats_4 = new JLabel();
    
        stats_1.setText(stars);  //starts is a string like ("***")
        stats_2.setText(stars); 
        stats_3.setText(stars);          
        stats_4.setText(stars);
    
        panel.add(label_1);
        panel.add(label_2);
        panel.add(label_3);
        panel.add(label_4);
    

    我下面的代码只在一整列中显示星星。如果我移除第二个面板,并将“统计标签”添加到第一个面板,它将显示一个2 x 4的网格布局,如下所示:

    enter image description here

    关于如何获得像我发布的第一张图像那样的输出,有什么想法吗?

    1 回复  |  直到 7 年前
        1
  •  2
  •   c0der    7 年前

    JFrame 默认情况下使用 BorderLayout .
    这是: frame.add(panel); 添加 panel BorderLayout.CENTER
    这是: frame.add(panel_2); 添加 panel_2 边界布局。居中
    问题是 边界布局。居中 只能容纳一个组件。
    使用: frame.add(panel, BorderLayout.WEST); frame.add(panel_2, BorderLayout.EAST); 要更好地了解布局,请阅读 A Visual Guide to Layout Managers .