我想創建一個圖形用戶界面使用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