我想创建一个图形用户界面使用Java的BMR计算器。嵌套FlowLayout面板
我在使用GUI方面遇到了一些问题,所以我一直在尝试使用不同的布局管理器/嵌套Jpanels。
我目前的代码有一个年龄和性别标签,都包含在流布局中的单独JPanel中,但问题在于它们出现在彼此旁边,而不是像我希望的那样在单独的行上。
我该如何使用我的代码实现这个功能?我目前的laoyut如下,我希望性别低于年龄,并且已经玩了一段时间,但无法使其工作。
干杯。
package v2;
import javax.swing.*;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.FlowLayout;
public class BmrCalcv2 extends JFrame {
static JFrame mainFrame;
static JPanel mainPanel;
static JMenuBar menuBar;
static JMenu fileMenu, editMenu;
static JPanel agePanel;
private JLabel ageLabel;
private JTextField ageTextField;
static JPanel genderPanel;
private JLabel genderLabel;
public BmrCalcv2() {
// Main JFrame
mainFrame = new JFrame("BMR/TDEE Calculator");
mainPanel = new JPanel();
// All JPanel declarations
menuBar = new JMenuBar();
agePanel = new JPanel();
genderPanel = new JPanel();
// JPanel layout managers
agePanel.setLayout(new FlowLayout(10));
genderPanel.setLayout(new FlowLayout(10));
// Menu JPanel
fileMenu = new JMenu("File");
editMenu = new JMenu("Edit");
menuBar.add(fileMenu);
menuBar.add(editMenu);
// Age JPanel
ageLabel = new JLabel("Age:");
ageTextField = new JTextField(5);
agePanel.add(ageLabel);
agePanel.add(ageTextField);
// Gender JPanel
genderLabel = new JLabel("Gender:");
genderPanel.add(genderLabel);
// Adding sub JPanels to main JPanel
mainPanel.add(agePanel);
mainPanel.add(genderPanel);
// Adding main JPanel/menubar to JFrame
mainFrame.setJMenuBar(menuBar);
mainFrame.add(mainPanel);
}
public static void main(String[] args) {
BmrCalcv2 frame = new BmrCalcv2();
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainFrame.setVisible(true);
mainFrame.setSize(330, 300);;
mainFrame.setResizable(false);
}
}
对于标签/字段对,我会推荐'GridBagLayout'或['GroupLayout'](http://stackoverflow.com/a/21659516/418556)。 –
你会推荐我为每个字段/标签组使用一个JPanel还是一个? – user3186023
@ Ftahir192在这种情况下,最可能的是 – MadProgrammer