Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.03.2013, 18:42   #1
azart
 
Регистрация: 12.09.2011
Сообщений: 8
По умолчанию Jpanel и GridBaglayout

Доброго времени суток!
Пользовался поиском, но решение на свой вопрос не нашел.
Ситуация такая:
делаю фрейм, добавляю в него панель, в неё еще две панели. Затем по очереди добавляю в панели компоненты (лейблы, поля и тд).
в общем делаю так:
Код:
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, помогите решить проблему.
Изображения
Тип файла: jpg 1.jpg (12.6 Кб, 148 просмотров)
azart вне форума Ответить с цитированием
Старый 06.03.2013, 18:55   #2
azart
 
Регистрация: 12.09.2011
Сообщений: 8
По умолчанию

а не может ли это быть из-за того, что я для каждого компонента (имею виду лейблы, поля, кнопки и тд) создаю отдельный, свой объект GridBagLayout?
azart вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Размеры JPanel yazZ3va Общие вопросы по Java, Java SE, Kotlin 1 11.12.2012 14:11
Проблема с JPanel doctorclo2011 Общие вопросы по Java, Java SE, Kotlin 1 24.06.2012 20:19
JPanel grimm_jow Общие вопросы по Java, Java SE, Kotlin 6 30.11.2010 18:59
JPanel объясните Sasha9132 Общие вопросы по Java, Java SE, Kotlin 0 29.11.2010 20:41
Jpanel в JscrollPane Jakethefish Общие вопросы по Java, Java SE, Kotlin 0 15.11.2010 14:25