簡體   English   中英

JPanel GridLayout不添加組件

[英]JPanel GridLayout not adding components

我正在嘗試使用具有GridLayout的JPanel創建GUI。 fromPanel工作正常,但toPanel只會添加JTextFields。 面板的代碼幾乎完全相同,所以我不確定為什么一個有效但另一個無效。 我嘗試將行或列更改為0,但JLabel仍未顯示在toPanel中。

這是我的代碼:

public class Driver extends JFrame{
private int WIDTH = 800, HEIGHT = 500, WIDTH2 = 350;
private JPanel toPanel, fromPanel, sizePanel, messagePanel, deliveryPanel,
        totalPanel, bottomPanel;
private JLabel firstLabel, lastLabel, streetLabel, cityLabel, stateLabel, zipLabel;
private JTextField toFirstText, toLastText, toStreetText, toCityText, toStateText, toZipText,
    fromFirstText, fromLastText, fromStreetText, fromCityText, fromStateText, fromZipText;

public Driver(){
    setTitle("JoAnn's Floral");
    setSize(WIDTH, HEIGHT);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setLayout(new FlowLayout());
    //labels
    lastLabel = new JLabel("Last Name", JLabel.RIGHT);
    firstLabel = new JLabel("First Name", JLabel.RIGHT);
    streetLabel = new JLabel("Street", JLabel.RIGHT);
    cityLabel = new JLabel("City", JLabel.RIGHT);
    stateLabel = new JLabel("State", JLabel.RIGHT);
    zipLabel = new JLabel("ZIP", JLabel.RIGHT);
    buildToPanel();
    add(toPanel);
    buildFromPanel();
    add(fromPanel);
}

public void buildToPanel(){
    toPanel = new JPanel(new GridLayout(6, 2, 5, 5));
    toPanel.setBorder(BorderFactory.createTitledBorder("To"));
    toPanel.setPreferredSize(new Dimension(WIDTH2, HEIGHT/3));
    //text fields
    toLastText = new JTextField(10);
    toFirstText = new JTextField(10);
    toStreetText = new JTextField(10);
    toCityText = new JTextField(10);
    toStateText = new JTextField(10);
    toZipText = new JTextField(10);
    //add to layout
    toPanel.add(firstLabel);
    toPanel.add(toFirstText);       
    toPanel.add(lastLabel);
    toPanel.add(toLastText);
    toPanel.add(streetLabel);
    toPanel.add(toStreetText);
    toPanel.add(cityLabel);
    toPanel.add(toCityText);
    toPanel.add(stateLabel);
    toPanel.add(toStateText);
    toPanel.add(zipLabel);
    toPanel.add(toZipText);
}

public void buildFromPanel(){
    fromPanel = new JPanel(new GridLayout(6, 2, 5, 5));
    fromPanel.setBorder(BorderFactory.createTitledBorder("From"));
    fromPanel.setPreferredSize(new Dimension(WIDTH2, HEIGHT/3));
    //text fields
    fromFirstText = new JTextField(10);
    fromLastText = new JTextField(10);
    fromStreetText = new JTextField(10);
    fromCityText = new JTextField(10);
    fromStateText = new JTextField(10);
    fromZipText = new JTextField(10);
    //add to layout
    fromPanel.add(firstLabel);
    fromPanel.add(fromFirstText);
    fromPanel.add(lastLabel);
    fromPanel.add(fromLastText);
    fromPanel.add(streetLabel);
    fromPanel.add(fromStreetText);
    fromPanel.add(cityLabel);
    fromPanel.add(fromCityText);
    fromPanel.add(stateLabel);
    fromPanel.add(fromStateText);
    fromPanel.add(zipLabel);
    fromPanel.add(fromZipText);
}

public static void main(String[] args) {
Driver drive = new Driver();
drive.setVisible(true);

}
}

JComponent一次只能出現在一個容器中。 由於每個標簽只有一個實例,因此代碼只會在屏幕上顯示一個。

提示

  1. 請參閱Java Swing中是否應避免使用set(Preferred | Maximum | Minimum)Size方法? (是。)
  2. 還要考慮每個詳細信息面板的GroupLayout ,如本答案中所示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM