2013-07-26 3 views
1

Мне нужно разработать приложение Java swing, которое должно выполнять психологический эксперимент.Качание, повторное использование одного «экрана» для нескольких прогонов

Эксперимент состоит из белого экрана, в котором появляется небольшой смайлик, «стоит там» в течение 3 секунд, а затем исчезает. Затем экран снова будет белым, и человек должен щелкнуть по пространству, которое, по его мнению, было смайликом. После этого в разное пространство появляется еще один смайлик, и вся процедура повторяется несколько раз. Будет создана база данных для сохранения исходных координат и координат, на которые человек нажал.

Вопрос в том, как это произойдет в одном окне? Я пробовал с несколькими JForms, и это слишком много работает, и он открывает разные окна для каждой итерации.

+1

, пожалуйста, прочитайте учебники Oracle JLabel, Icon, MouseListener , Swing Timer, примеры примеров кода, – mKorbel

+0

Пожалуйста, посмотрите на [Игра с фигурами] (http://tips4java.wordpress.com/2013/05/13/playing-with-shapes/), by @camickr, у него есть некоторые интересные вещи, которые вам могут понадобиться для вашего проекта, например, проверка границ для фигур :-) –

ответ

2

Вот что делать. Вам нужно создать класс, который расширяет JPanel и переопределяет paintComponent, чтобы нарисовать изображение в соответствующем месте. Конструктор также должен добавить слушателя мыши, который может обнаружить щелчок мыши в соответствующей области, обновить данные и вызвать repaint(). Что касается скрытия смайлика через определенное время, используйте свинг Timer.

Теперь я не буду приводить пример, потому что мы не делаем домашнее задание для вас при переполнении стека.

+0

-1 потому что концепция 3000ms не показана где-то –

+0

Я только что отредактировал ее. – tbodt

+0

делать +1 то: P –

3

Старт с

Начинать с чем-то вроде JPanel. Здесь вы делаете всю свою работу. Вы можете создать экземпляр JFrame и добавить к нему этот компонент.

Когда пользователь будет готов, вы начнете цикл. Это загрузит данные из базы данных, запустит javax.swing.Timer и попросит, чтобы компонент был перекрашен (чтобы он мог отображать изображение)

Когда таймер запускается, он должен сбросить дисплей (пустой).

Когда пользователь нажимает на компонент (который будет обнаружен слушателем мыши), вы можете записать точку мыши и начать новый цикл.

+0

+1 это поможет пользователю в решении проблемы, а также заставив его узнать много вещей –

0

Моя рекомендация:

Сделайте окном JPanel и переопределить метод рисования

public class MyPanel extends JPanel { 
    public void paint(Graphics g) { 
    // do your painting here 
    } 
} 

Сначала убедитесь, что вы уничтожили все от JPanel (от метода краски) Далее в методе красочного шоу (поиск java swing paint image ...) Но только если имеются данные смайлика (координаты).

Следующая сделать функцию, что Виль переключить смайлик координаты

toggleEmoticon(){ 
if(emoticon.x != -1 && emoticon.y != -1){ 
    emoticon.x=-1; 
    emoticon.y=-1; 
} 
else{ 
    emoticon.x = random() //between 0 and panel width 
    emoticon.y = random() //between 0 and panel height 
} 

сделать таймер, который вызывает эту функцию после х секунд ...

Тогда вы должны проверить, если координаты Mouseclick находятся вблизи или жгутов границы показанного смайлик ... (заметьте, что показан смайлик будет отображаться из выбранных координат + ширина и высота)

И я думаю, вы можете решить все остальное. Найдите примеры того, что я вам сказал и попытаюсь сделать самостоятельно, никогда не ожидайте рабочего примера, иначе вы не будете знать, как это сделать ...

+0

краска - не рекомендуемый метод выполнения пользовательской покраски. Взгляните на [Живопись в AWT и Swing] (http://www.oracle.com/technetwork/java/painting-140037.html) – MadProgrammer

+0

Может быть так, но поскольку это звучит как домашние вопросы, -комплексное решение оказалось достаточно хорошим. Но я согласен, ваш пост намного лучше :) – DaMachk

+0

Это будет еще больше поводов для демонстрации правильного процесса: P – MadProgrammer

Смежные вопросы