Назначение Java GUI, не знаете, как его решить? - PullRequest
0 голосов
/ 19 февраля 2011

Извините за этот вопрос, но я боролся с заданием, которое мой профессор давал нам в течение нескольких дней, и не знаю, с чего начать.Я не хочу, чтобы кто-то делал это для меня или чего-то в этом роде, я просто хочу научиться / получить хорошие подсказки, потому что вообще не могу найти точку опоры в этом.Назначение выглядит следующим образом:

Реализация графического интерфейса пользователя с классом GridLayout с сеткой 10 5 JButtons и JLabels.Кнопки J должны находиться в первых пяти рядах, а метки J - в следующих пяти рядах.(Первый JButton должен иметь текст 1-1, а последний текст 5-5.) JButton в i-й строке и j-м столбце должен иметь текст i-j.Текст JLabels должен быть 0.

Цель JLabels состоит в подсчете щелчков соответствующих кнопок J.Например, когда пользователь нажимает кнопку i-j в первый раз, текст JLabel (5 + i) -й строки и j-го столбца должен измениться на 1.

Вы не можете использовать какие-либо переменные экземпляра.

Подсказка 1: использовать и внутренний класс для меток.

Подсказка 2: вы можете увеличить «номер» метки наполучить текст метки, разобрать его в int с помощью Integer.parseInt () и изменить текст метки.Вы также должны добавить еще один JButton, который сбрасывает счетчики на JLabels.Текст на JButton должен быть сброшен.

До сих пор я только изучал заметки, не понимая или невольно печатая, и придумал совершенно неработающую отчаянную попытку, которая выглядит следующим образом:1020 *

} ​​

Может кто-нибудь предложить мне здесь какой-нибудь совет или подсказку, поскольку я боролся с этим в течение возраста?

Ответы [ 3 ]

3 голосов
/ 19 февраля 2011

Пожалуйста, посмотрите на эту ссылку: Итак, вам нужно написать программу, но не знаете, как начать , которая даст вам отличные советы о том, как начать.Ключ состоит в том, чтобы разбить вашу большую проблему на маленькие шаги, а затем попытаться решить каждый шаг в отдельности.Тогда, если вы застряли по крайней мере, вы сможете опубликовать гораздо более конкретный вопрос, на который легче ответить конкретным и полезным ответом.Другим хорошим ресурсом являются учебные пособия по Swing, которые могут показать вам, как использовать различные компоненты Swing, включая JFrames, JPanels, JButtons, текстовые компоненты, а что нет.Вы можете найти их здесь: Использование компонентов Swing

Удачи!

Редактировать 1: Ваш код теперь компилируется, но есть две явные проблемы, которые сначала нужно исправить: 1) У вашего класса нет конструктора, а есть «псевдо-конструктор».Помните, что конструкторы не имеют типа возврата, даже void.2) Вы не используете GridLayout.

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

2 голосов
/ 19 февраля 2011

Обычно, когда вы пишете приложение на Swing, ваш основной класс расширяет JFrame. Вы делаете всю инициализацию / создаете кнопки / etc в конструкторе, затем создаете экземпляр класса в main()

- редактировать -
см. комментарий hovercraft - вам не нужно делать следующее в конструкторе расширенного JFrame. Просто измените this на переменную JFrame, если вы делаете это внешне.

Документация по Java - ваш лучший друг - используйте ее. http://download.oracle.com/javase/6/docs/api/

Создайте объект GridLayout, назначьте его на панель содержимого (this.getContentPane()) с помощью setLayout

Создайте свои кнопки / ярлыки, добавьте их на панель содержимого

и т. Д. И т. Д.

Посмотрите документацию для JButton.setActionCommand, JButton.addActionListener

Вы можете получить доступ к меткам позже, чтобы увеличить / сбросить их с помощью this.getContentPane().getComponents() или одним из других методов доступа

0 голосов
/ 23 февраля 2011

Прежде чем я посмотрю код, вам наверняка понадобятся учебники по Java для кнопок и действий:

http://download.oracle.com/javase/tutorial/uiswing/components/button.html

http://download.oracle.com/javase/tutorial/uiswing/misc/action.html

Первая проблема с вашим кодом заключается в том, что вы используете переменную экземпляра для хранения кнопок в массиве. Вам это не нужно, поскольку вы уже сразу добавляете их на панель.

Вторая проблема - заставить ваши кнопки делать что-то при нажатии. Вам нужно добавить ActionListener вашего собственного дизайна для каждой кнопки следующим образом:

myButton = new JButton();
myButton.addActionListener(new MyButtonListener());

и объявить некоторый MyButtonListener:

public class MyButtonListener implements ActionListener
{
}

содержимое класса ActionListener выходит за рамки моей помощи по вашей домашней работе. Но руководства по Java - отличный ресурс, если вы не знаете, как реализовать ActionListener.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...