Доброго времени суток!
Пользовался поиском, но решение на свой вопрос не нашел.
Ситуация такая:
делаю фрейм, добавляю в него панель, в неё еще две панели. Затем по очереди добавляю в панели компоненты (лейблы, поля и тд).
в общем делаю так:
Код:
public class AddNewDogovorFrame {
public static void main(String[] args) {
AddNewFrame frame = new AddNewFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
class AddNewFrame extends JFrame {
private static final long serialVersionUID = 1L;
protected static final String JComboBox = null;
public int screenW;
public int screenH;
private JMenuBar menuBar;
private JMenu fileMenu;
private JLabel dateLabel;
private JLabel orgLabel;
private JLabel countLabel;
private JLabel contrLabel;
private JLabel numberLabel;
private JLabel projectLabel;
private JLabel typeLabel;
private JLabel orgBottom;
private JLabel comBottom;
private JTextField dateField;
private JTextField contrField;
private JTextField numberField;
private JTextField orgFieldBottom;
private JTextField comField;
private JTextField countField;
private JButton printButton;
private JButton okButton;
private JButton writeButton;
private JButton closeButton;
private JButton buttonCalendar;
private JComboBox orgField;
private JComboBox projectCombo;
private JMenuItem certificateMenu;
public AddNewFrame() {
setTitle(" Добавление нового договораv 0.1");
ResizeFrame();
setBounds(screenW/4, screenH/4, screenW/2,screenH/2); GridBagLayout layout = new GridBagLayout();
JPanel panel = new JPanel();
JPanel mainPanel = new JPanel();
JPanel southPanel = new JPanel();
panel.setLayout(layout);
mainPanel.setLayout(layout);
southPanel.setLayout(layout);
add(panel);
panel.add(mainPanel, new GBC(0,0));
panel.add(southPanel, new GBC(0,1));
mainPanel.setLayout(layout);
Border eth = BorderFactory.createLoweredBevelBorder();
Border title = BorderFactory.createTitledBorder(eth, "Добавление нового договора");
mainPanel.setBorder(title);
menuBar = new JMenuBar();
fileMenu = new JMenu("Справка");
dateLabel = new JLabel ("Дата заведения договора: ");
orgLabel = new JLabel("Организация: ");
countLabel = new JLabel("Банковский счет: ");
contrLabel = new JLabel("Контрагент: ");
numberLabel = new JLabel("Номер договора: ");
projectLabel = new JLabel("Проект: ");
typeLabel = new JLabel("Файл договора: ");
orgBottom = new JLabel("Организация: ");
comBottom = new JLabel("Комментарий: ");
dateField = new JTextField(25);
contrField = new JTextField(25);
numberField = new JTextField(25);
orgFieldBottom = new JTextField(25);
comField = new JTextField(25);
countField = new JTextField(25);
printButton = new JButton("Print");
okButton = new JButton("OK");
writeButton = new JButton("Write");
closeButton = new JButton("Close");
buttonCalendar = new JButton("Дата");
orgField = new JComboBox();
projectCombo = new JComboBox();
certificateMenu = new JMenuItem("Показать справку");
fileMenu.add(certificateMenu);
menuBar.add(fileMenu);
setJMenuBar(menuBar);
mainPanel.add(dateLabel, new GBC(0,0,3,1).setWeight(0,0));
mainPanel.add(dateField, new GBC(0,1,3,1).setWeight(0,0));
mainPanel.add(buttonCalendar, new GBC(0,2,1,1).setWeight(0,0));
mainPanel.add(orgLabel, new GBC(1,3,3,1).setWeight(0,0));
mainPanel.add(orgField, new GBC(1,3,3,1).setWeight(0,0));
certificateMenu.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
CertificateActionPerformed(e);
}
});
closeButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e){
CloseButton(e);
}
});
}
private void CertificateActionPerformed(java.awt.event.ActionEvent evt) {
new CertificateFrame().setVisible(true);
}
private void CloseButton(java.awt.event.ActionEvent evt){
setVisible(false);
}
public void ResizeFrame(){
Toolkit kit = Toolkit.getDefaultToolkit();
Dimension screenSize = kit.getScreenSize();
screenH = screenSize.height;
screenW = screenSize.width;
}
}
класс GBC описывает "получение" стандратных параметров для GridBagContrains.
В итоге что получаю (во вложении).
Собственно в чем трабла: вот указываю при добавлении компонента
mainPanel.add(dateLabel, new GBC(0,0,3,1).setWeight(0,0))
что по идее означает что 0 столбец, 0 строка, занимает 3 столбца и 1 строку и т.д. для еще 5 элементов, но в итоге получается как при FlowLayout, помогите решить проблему.