Не компилируется с GridBagLayout();

 
 
 
Сообщения:7
Делал по видео-уроку. Чел не объяснил как работать с менеджерами, сказал только на данном этапе использовать GridBagLayout();
Добавил кнопку и текстовое поле, но нужно добавить их во фрейм. Добавил frame.setLayout(new GridBagLayout()); но не компилируется, выдает ошибку. В чем дело?

import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JTextField;

public class Main {
	public static void main(String[] args) {
		JFrame frame = new JFrame();
		frame.setSize(1000,600);
		frame.setTitle("Помощник"); // однако можно задать название при создании объекта
		frame.setVisible(true);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // окно закрывается
		frame.setLocationRelativeTo(null); // посередине экрана
		frame.setResizable(false); // запрет на растягивание
		frame.setLayout(new GridBagLayout());
		
		JButton button = new JButton();
		button.setText("Нажми меня");
		
		JTextField textField = new JTextField(30);
		
		frame.add(button);
		frame.add(textField);
		
		
	}
}
Изменен:02 янв 2017 20:28
 
 
Сообщения:88
нет тут ошибок.. только frame.setVisible(true); поставь последним вызовом (после frame.add(textField);)
 
 
Сообщения:7
keekkenen:
нет тут ошибок.. только frame.setVisible(true); поставь последним вызовом (после frame.add(textField);)

Спасибо. То есть frame.setVisible(true); ВСЕГДА должен быть в самом-самом конце кода, описывающего графический интерфейс? Или всего кода?
 
 
Сообщения:88
setVisible после всех манипуляций с графическими элементами (созданием, размещение, добавлением слушателей и т.п.)
 
 
Сообщения:7
keekkenen:
setVisible после всех манипуляций с графическими элементами (созданием, размещение, добавлением слушателей и т.п.)

Все равно не компилируется
Вот скриншот ошибки картинка код тот же самый
Изменен:02 янв 2017 22:05
 
 
Сообщения:88
извращенец, поставь себе нормльную среду разработки.. это не путь джедая в блокноте писать..
ругается из-за отсутствия импорта
import java.awt.GridBagLayout;
 
 
Сообщения:37
saphinidy:
Спасибо. То есть frame.setVisible(true); ВСЕГДА должен быть в самом-самом конце кода, описывающего графический интерфейс? Или всего кода?


Если я правильно понимаю систему EventQueue, то после исполненния setVisible(true) все остальные манипуляции должны проводиться строго в EventDispatchThread через команды SwingUtilities.invokeLater() или SwingUtilities.invokeAndWait().
 
 
Сообщения:88
после создания (setVisible) всех графических элементов, действия с ними нужно (лучше всего) производить в основно GUI потоке (всякие клики, драг-энд-дропы), а вот обработку, особенно трудоемкую, этих действий и вывод/обновление в GUI в отдельных потоках, например, посредством вызова потока SwingUtilities.invokeLater(), он предпочтительнее, т.к. работае в ассинхронном режиме
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет