在JFrame上定位两个面板

时间:2017-12-10 10:56:12

标签: java swing jframe layout-manager

我试图获得这样的输出(使用Netbeans设计器设计),我需要通过代码实际设计它:

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 个答案:

答案 0 :(得分:2)

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

相关问题