Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Несколько слоев в JFrame / 2 сообщений из 2, страница 1 из 1
29.07.2013, 20:13:03
    #38347879
cherurg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько слоев в JFrame
Здравствуйте. Совсем не могу решить задачу. Есть такой код:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
public void go() {
	
		JFrame frame = new JFrame();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setSize(size.x + 6, size.y + 35);
		
		
		CardLayout cardLayout = new CardLayout();
		JPanel panel = new JPanel(cardLayout);
		
		
		Axis axis = new Axis(-2, 2, -2, 2, (int)size.getX(), (int)size.getY(), panel); //внутри этого метода в panel добавляется элемент DrawPanel extends JPanel
		DrawPanel drawPanel = new DrawPanel(); //здесь DrawPanel тоже наследует JPanel
		panel.add(drawPanel, "grid");
		
		
		frame.getContentPane().add(panel);
		
		
		frame.setResizable(false);	
		frame.setVisible(true);
		
		
		cardLayout.show(panel, "grid");
		cardLayout.show(panel, "axis");
	}



Он создает JFrame frame. Затем он создает JPanel panel с диспетчером CardLayout, в которую он кладет сначала один элемент DrawPanel, затем другой. Они являются внутренними классами классов Axis и Grid, так что реализация методов paintComponent(Graphics g) у них разная. После этого panel кладется во frame. frame делается видимым. Последние две строчки, вроде как, должны заставить сначала прорисоваться первый DrawPanel, а затем второй.
Но рисуется только второй, первого я не вижу. Могу с уверенностью сказать, что он даже не начинает отрисовку, потому как я добавил отладочный вывод в paintComponent'ах. Рисовка первой панели ("grid") выводит "draw1", а рисовка второй ("axis") - "draw2". И вот в консоли я вижу только строку "draw2".
...
Рейтинг: 0 / 0
29.07.2013, 20:16:51
    #38347882
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько слоев в JFrame
Весь GUI однопоточный.
Сначала отрабатывает
cardLayout.show(panel, "grid");
потом
cardLayout.show(panel, "axis");
потом отрисовка.
Отрисовка рисует актуальное состояние. Смысл ей рисовать то что уже не нужно?
Оберните каждый метод в SwingUtils.invokeLater()
или привяжите к кнопке.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Несколько слоев в JFrame / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]