Работа с фреймами и Java AWT
Вопрос
В настоящее время я создаю программу с графическим интерфейсом AWT и столкнулся с проблемой.По сути, мне нужно изображение в верхнем левом углу экрана и столбец кнопок справа от изображения.Однако это не то, что происходит.Когда я запускаю апплет, я щелкаю всплывающее окно с надписью «Запустить программу», а затем нужное мне изображение оказывается в самом окне апплета, а столбец кнопок находится в другом окне.Вот как это выглядит:
Можно ли как-нибудь это исправить, чтобы изображение и кнопки находились в одном окне?
Решение
Ага.Вы создаете фрейм, но изображение находится вне него.Без кода мало что могу сказать, но Учебное пособие по АВТ на java.sun.com неплохо разбираются в этом вопросе.
Хорошо, еще немного (я давно не использовал AWT).
Вот пара проблем, которые у вас есть.Фрейм — это своего рода окно: он хочет быть отдельным окном со своей кнопкой закрытия и т. д.
Когда вы создаете графику, вы должны указать, что это компонент, являющийся его родителем;вы каким-то образом связываете его с апплетом.Итак, у вас есть фрагмент кода, который выглядит так
add(myComponent);
в контексте апплета как this
.
public class myApplet extends Applet {
// lots of stuff here creating your canvas, putting the image in it
// and so forth. There's an example, see fn 1.
// When you're done, you have a component, call it myImage.
add(myImage);
}
У вас есть фрейм, и вы добавляете к нему свои кнопки.
public class MyFrame extends Frame {
add(new Button(...));
add(new Button(...));
}
Вам нужно каким-то методом переместить код, который добавляет ваш Canvas в класс Frame.
(ПРЕДУПРЕЖДЕНИЕ:Это нет полный Java-код, названия нужных методов навскидку не помню.Вероятно, в этом() по крайней мере, в апплете.
фн1. http://java.sun.com/developer/onlineTraining/awt/contents.html#simpleexample