我试图获得这样的输出(使用Netbeans设计器设计),我需要通过代码实际设计它:
JFrame
的布局应该是这样的:
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网格布局,如下所示:
关于如何获得输出的任何想法,如我发布的第一张图片?
答案 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。