我正在嘗試使用gridx和gridy約束來創建如下所示的界面(忽略Next按鈕)。前兩個JLabel-JTextField對工作正常,但我不確定我爲其餘10個字段設置了什麼gridx和gridy值。瞭解GridBagConstraints gridx和gridy
代碼:
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class InitialPanel extends JPanel {
private static final long serialVersionUID = -3159520372145273536L;
/**
* @param gridBagLayout
*/
public InitialPanel() {
super();
initComponents();
}
/**
* For each component to be added to this container:
*
* 1. Create the component
* 2. Set instance variables in the GridBagConstraints instance
* 3. Add component to panel.
*
*/
private void initComponents() {
this.setLayout(new GridBagLayout());
GridBagConstraints gridBagConstraints = new GridBagConstraints();
// All mandatory fields.
// 1.
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
JLabel hwCodeLabel = new JLabel("HW CODE:");
this.add(hwCodeLabel, gridBagConstraints);
JTextField hwCodeTextField = new JTextField("");
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 0;
hwCodeTextField.setColumns(10);
this.add(hwCodeTextField, gridBagConstraints);
// 2.
JLabel publisherIdLabel = new JLabel("PUBLISHER ID:");
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
this.add(publisherIdLabel, gridBagConstraints);
JTextField publisherIdTextField = new JTextField("");
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 1;
publisherIdTextField.setColumns(10);
this.add(publisherIdTextField,gridBagConstraints);
/*// 3.
JLabel journalTitleLabel = new JLabel("JOURNAL TITLE:");
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
this.add(journalTitleLabel,gridBagConstraints);
JTextField journalTitleTextField = new JTextField();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 2;
journalTitleTextField.setColumns(10);
this.add(journalTitleTextField,gridBagConstraints);
// 4.
JLabel printISSNLabel = new JLabel("PRINT ISSN:");
gridBagConstraints.gridx = 3;
gridBagConstraints.gridy = 1;
this.add(printISSNLabel,gridBagConstraints);
JTextField printISSNTextField = new JTextField();
gridBagConstraints.gridx = 3;
gridBagConstraints.gridy = 2;
journalTitleTextField.setColumns(10);
this.add(printISSNTextField,gridBagConstraints);
// 5.
JLabel eISSNLabel = new JLabel("ELECTRONIC ISSN:");
gridBagConstraints.gridx = 4;
gridBagConstraints.gridy = 1;
this.add(eISSNLabel,gridBagConstraints);
JTextField eISSNTextField = new JTextField();
gridBagConstraints.gridx = 4;
gridBagConstraints.gridy = 2;
journalTitleTextField.setColumns(10);
this.add(eISSNTextField,gridBagConstraints);
// 6.
JLabel publisherNameLabel = new JLabel("PUBLISHER NAME:");
gridBagConstraints.gridx = 5;
gridBagConstraints.gridy = 1;
this.add(publisherNameLabel,gridBagConstraints);
JTextField publisherNameTextField = new JTextField();
gridBagConstraints.gridx = 5;
gridBagConstraints.gridy = 2;
journalTitleTextField.setColumns(10);
this.add(publisherNameTextField,gridBagConstraints);
// 7.
JLabel publisherLOCLabel = new JLabel("PUBLISHER LOCATION:");
gridBagConstraints.gridx = 6;
gridBagConstraints.gridy = 1;
this.add(publisherLOCLabel,gridBagConstraints);
JTextField publisherLOCTextField = new JTextField();
gridBagConstraints.gridx = 6;
gridBagConstraints.gridy = 2;
journalTitleTextField.setColumns(10);
this.add(publisherLOCTextField,gridBagConstraints);
// 8.
JLabel coverDateLabel = new JLabel("COVER DATE:");
gridBagConstraints.gridx = 7;
gridBagConstraints.gridy = 1;
this.add(coverDateLabel,gridBagConstraints);
JTextField coverDateTextField = new JTextField();
gridBagConstraints.gridx = 7;
gridBagConstraints.gridy = 2;
journalTitleTextField.setColumns(10);
this.add(coverDateTextField,gridBagConstraints);
// 9.
JLabel volumeLabel = new JLabel("VOLUME:");
gridBagConstraints.gridx = 8;
gridBagConstraints.gridy = 1;
this.add(volumeLabel,gridBagConstraints);
JTextField volumeTextField = new JTextField();
gridBagConstraints.gridx = 8;
gridBagConstraints.gridy = 2;
journalTitleTextField.setColumns(10);
this.add(volumeTextField,gridBagConstraints);
// 10.
JLabel issueLabel = new JLabel("ISSUE:");
gridBagConstraints.gridx = 9;
gridBagConstraints.gridy = 1;
this.add(issueLabel,gridBagConstraints);
JTextField issueTextField = new JTextField();
gridBagConstraints.gridx = 9;
gridBagConstraints.gridy = 2;
journalTitleTextField.setColumns(10);
this.add(issueTextField,gridBagConstraints);
// 11.
JLabel copyrightStatementLabel = new JLabel("COPYRIGHT STATEMENT:");
gridBagConstraints.gridx = 10;
gridBagConstraints.gridy = 1;
this.add(copyrightStatementLabel,gridBagConstraints);
JTextField copyrightStatementTextField = new JTextField();
gridBagConstraints.gridx = 10;
gridBagConstraints.gridy = 2;
journalTitleTextField.setColumns(10);
this.add(copyrightStatementTextField,gridBagConstraints);
// 12.
JLabel copyRightYearLabel = new JLabel("COPYRIGHT YEAR:");
gridBagConstraints.gridx = 11;
gridBagConstraints.gridy = 1;
this.add(copyRightYearLabel,gridBagConstraints);
JTextField copyRightYearTextField = new JTextField();
gridBagConstraints.gridx = 11;
gridBagConstraints.gridy = 2;
journalTitleTextField.setColumns(10);
this.add(copyRightYearTextField,gridBagConstraints);
*/
}
}
如果需要,可以在'inset'約束的幫助下添加行之間的間距(如圖所示):gridBagConstraints .insets = new Insets(0,0,8,0);' – afzalex 2014-10-20 19:05:35
謝謝,但爲什麼我的[代碼](http://pastebin.com/4if42bza)無法按預期工作 - 我在哪裏做錯了? – 2014-10-20 19:30:51
@Sandeep爲什麼你在你的代碼中放置了這麼多不必要的'新行'。 – afzalex 2014-10-20 19:41:01