在 JFrame 上定位两个面板
Positioning two panels on JFrame
我正在尝试获得这样的输出(使用 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);
我下面的代码只在一整列中显示星星。如果我删除第二个面板并将 'stats labels' 添加到第一个面板,它会显示一个 2 x 4 网格布局,如下所示:
关于如何获得像我发布的第一张图片那样的输出有什么想法吗?
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。
我正在尝试获得这样的输出(使用 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);
我下面的代码只在一整列中显示星星。如果我删除第二个面板并将 'stats labels' 添加到第一个面板,它会显示一个 2 x 4 网格布局,如下所示:
关于如何获得像我发布的第一张图片那样的输出有什么想法吗?
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。