Сначала я задам вопрос, а затем объясню применение.
Как мне заставить JFrame
с вести себя как JOptionPanes
? ( учебник не помог ), т.е.
[Show content >> return a value]
. Кроме того, мне нужно, чтобы это было
[Show the frame >> Ask information >> Modify an object passed as parameter to the constructor >> return something]
Я уже сделал, чтобы кнопка «ОК» получила нужный мне ответ (отображающий его в консоли), но я не могу понять, куда поместить оператор return
я хочу, чтобы эта функция была похожа на
public static String getAnswer(Args, Answer)
Args
, может содержать название поля, тип данных, максимальную длину и
Answer
, это объект, который будет изменен после того, как пользователь предоставит информацию и нажмет "ОК"
Всегда есть и аргумент, и ответ на него. например (посмотрите на скриншот, чтобы увидеть, как «самый сложный» тип сообщения, которое мне нужно отобразить, хотя и неполон, потому что должен отображать различные типы компонентов в зависимости от типа данных).
| Arg | Answer |
--------------------------------------
| Type | fldName | |
--------------------------------------
| int | Age: | 22 |
| String | Name: | Roger |
| Date | Birth: | 31/10/1989 |
То, что я сделал до сих пор, - это отобразил JFrame (который является диалоговым окном) с желаемым содержимым и сделал кнопку, чтобы показать мне ответ в консоли.
Как мне построить JFrame? У меня есть 4 класса, три из которых описаны ниже на скриншоте, а последний - построить JPanel, который содержит три другие панели и добавить его в JFrame. Если вы хотите увидеть код , нажмите .
Почему я не использую JDialog, потому что ему нужен родительский фрейм, которого у меня нет. Мне нужно отобразить это из другого не Java-приложения, так что это, должно быть, уже верхний кадр.
<ч /> <ч />
Возможно, вы не захотите читать это, но если вы заинтересованы в чтении того, что я делаю, продолжайте:
Я знаю, что с помощью JOptionPane.showMessageDialog()
и так далее, моя проблема может быть решена, но я не могу понять, насколько она соответствует моим потребностям. Контент, показанный на панели JOptionPane, кажется мне ограниченным, и я не знаю, как сохранить контроль или ссылаться на детей, которых я в него вкладываю, все меняет свое поведение.
Мне нужно сделать пять разных диалогов, которые бы возвращали значения другому приложению (болезненные формы оракула 6i). Типы диалогов:
- Диалог печати , в котором отображается список принтеров или опция «Экспорт в файл»
- Диалог сообщения , показывает HTML-контент (например, предварительный просмотр электронной почты) и имеет кнопку «ОК».
- Да / Нет диалоговое окно , запрашивает подтверждение у пользователя, работает как диалоговое окно сообщения.
- Форма параметра , просит пользователя предоставить некоторую информацию, информацию, которую он запрашивает, основана на выборке или массиве строк.
- Список значений , основанный на операторе select, показывает результат так же, как и разработчик plsql.
Вот снимок экрана с последним элементом (Parameter form
), в данном примере элемент evey имеет тип Month, и ответ будет заполнен его значением.
![enter image description here](https://i.stack.imgur.com/pWEmN.png)
Как видите, кадр разделен на 3 блока (которые я сделал как 3 класса TopPanel
, MidPanel
и BotPanel
): диалог сообщений, пользовательские вводы и кнопки команд соответственно.
TopPanel
, расширяется от JScrollPane и создает JEditorPane, потому что он может отображать html-контент
MidPanel
, расширяется от JScrollPane (этот создается только для двух последних диалоговых окон в списке) и создает поля на основе объекта, который формирует передачу в качестве параметров, запрашиваемых пользователю, входных данных для этого, необходимо проверить в java, так как это может быть дата, textField или поле со списком, основанное на операторе select (на рисунке 12 месяцев в году, основанных на запросе к базе данных).
BotPanel
имеет элементы управления для ответа, который java будет давать формам, скажем, список параметров или ответ на диалог Да / Нет. Эта панель меняется с каждым видом диалога. например Для диалога да / нет, он имеет кнопки «Да» и «Нет», которые будут делать Java, возвращать истину или ложь, но для диалога формы параметров, он будет возвращать сообщение об ошибке, если происходит, и Объект, который содержит информацию пользователь выбрал.