Как создать окно в java
Перейти к содержимому

Как создать окно в java

  • автор:

библиотека Swing, создание окон

Создается просто окно JFrame. Как сделать так, чтобы не было стандартной кнопки «развернуть на весь экран» ?

Отслеживать
задан 13 июн 2016 в 9:04
Стандартное frame.setResizable(false); не подойдет? Или именно скрыть надо?
13 июн 2016 в 9:51
необходимо именно скрыть, т.е. чтобы этой кнопки вообще не видно было
13 июн 2016 в 12:47

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

29 июн 2016 в 15:28

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Что-то особой информации нет. Есть вариант только убить дефолтную декорацию setUndecorated(true); , а затем добавить заново свою кастомную панель, кнопки и повесить на данные кнопки обработчики.

Вот код, попробовал пояснить комментариями, на сколько мог. Вроде все понятно.

import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; /** * Created by iprogrammer on 13.06.2016. */ public class Main extends JFrame < JPanel p; JMenuBar mb; JButton close, min; int pX,pY; public Main() < createAndShowGUI(); >private void createAndShowGUI() < // Custom look and feel try < UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel"); >catch(Exception e) < >setDefaultCloseOperation(EXIT_ON_CLOSE); // Убиваем дефолтную декорацию (т.е. кнопки) setUndecorated(true); // Создаем Панель сверху mb = new JMenuBar(); mb.setLayout(new BorderLayout()); // Создаем панель p = new JPanel(); p.setOpaque(false); p.setLayout(new GridLayout(1,2)); // Создаем кнопки close = new JButton("x"); min = new JButton("-"); // Обработчик кнопки минимизации min.addActionListener(new ActionListener() < public void actionPerformed(ActionEvent ae) < setState(ICONIFIED); // Минимизация окна >>); // Обработчик кнопки закрытия close.addActionListener(new ActionListener() < public void actionPerformed(ActionEvent ae) < System.exit(0); // закрыть программу >>); min.setFocusPainted(false); close.setFocusPainted(false); // Добавляем кнопки p.add(min); p.add(close); // Устанавливаем кнопки справа mb.add(p, BorderLayout.EAST); setJMenuBar(mb); /******** ЭТО ЧТОБ ПЕРЕТЯГИВАТЬ ОКНО (НАЧАЛО) ************/ // Add mouse listener for JMenuBar mb mb.addMouseListener(new MouseAdapter() < public void mousePressed(MouseEvent me) < // берем координаты тыка и сохраняем их pX=me.getX(); pY=me.getY(); >>); // Устанавливаем MouseMotionListener чтоб поймать перетягивание mb.addMouseMotionListener(new MouseAdapter() < public void mouseDragged(MouseEvent me) < setLocation(getLocation().x+me.getX()-pX,getLocation().y+me.getY()-pY); >>); /******** ЭТО ЧТОБ ПЕРЕТЯГИВАТЬ ОКНО (КОНЕЦ) ************/ // это просто надпись final JLabel label = new JLabel("Hello World", SwingConstants.CENTER); label.setFont(label.getFont().deriveFont(40.0f)); getContentPane().add(label); // Устанавливаем размер setSize(400,400); setVisible(true); //setShape(new java.awt.geom.RoundRectangle2D.Double(0,0,getWidth(),getHeight(),5,5)); setLocationRelativeTo(null); > public static void main(String args[]) < new Main(); >> 

Получится что-то вроде этого:

введите сюда описание изображения

Остальное, я думаю, допилить сможете сами под себя.

Изучаем Java

Формы (фреймовые окна) создаются на основе классов Frame и JFrame. Создать форму можно с помощью мастера (его значок Frame располагается на той же вкладке, что и значок Panel). Рассмотрим пример создания формы с помощью мастера.

1. Создайте приложение с именем проекта и заголовком окна MyFrame.
2. Выберите команду File — >New и в секции General выберите значок Frame Откроется окно, показанное на рис. 9.8.

Рис 9.8. Диалоговое окно Frame Wizard

3. Выберите все, как на рисунке, и щелкните на кнопке ОК.
4. Измените компоновку формы 1 на XYLayout.
5. Добавьте в форму 1 (главную форму —класс Framel) две кнопки JButton со значениями свойства Text, равными «Показать» и «Скрыть».
6. Добавьте в конструктор класса Frame2 следующий код.
this.setSize(new Dimension(300, 300));
this.setTitle(«Новое окно»);
В этом коде мы устанавливаем размер созданного окна, являющегося экземпляром класса Frame2, и определяем заголовок для этого окна.
7. Теперь добавьте после объявления всех компонентов в классе Framel следующий код. private Frame2 myFrame = new Frame2();
8. Создайте обработчики события actionPerformed для обеих кнопок в форме 1 (листинг 9.5).

Листинг 9.5
Создание обработчики события для кнопок в форме 1

public void jButtonl_actionPerformed(ActionEvent e) myFrame.setVisible(true);
>
public void jButton2_actionPerformed(ActionEvent e) myFrame.setVisible(false);
>

Диалоговые окна, окна сообщений и окна запроса

Альтернатива формам — диалоговые окна. Они создаются на основе классов Dialog (java.awt) и JDialog (javax.swing). Мастер для создания заготовки диалогового окна открывается так: выберите значок Dialog на вкладке General окна Object Gallery, которое открывается с помощью команды File -> New. Откроется следующее диалоговое окно (рис. 9.9).

Рис 9.9 Диалоговое окно Dialog Wizard

Существуют готовые диалоговые окна, которые тоже можно использовать. Вот перечень тех диалоговых окон, которые мы рассмотрим далее.

— JColorChooser. Окно выбора цвета. Его мы уже кратко рассматривали ранее (пакет javax.swing, секция Swing Containers)
— JFileChooser. Окно выбора файла (пакет javax.swing, секция Swing Containers).
— JOptionPane – набор диалоговых окон, которые представляют собой модальные окна (т.е. такие, которые не позволяют передавать фокус другим окнам приложения, пока в них не будут выполнены необходимые действия и они не будут закрыты): окна подтверждения, окна ввода и др. (пакет javax.swing, секция Swing Containers).

Диалоговое окно JColorChooser вызывается с помощью метода showDialog. Вот как выглядит это диалоговое окно с заголовком «Выбор цвета текста».

Рис. 9.10. Диалоговое окно JColorChooser с заголовком Выбор цвета текста

Диалоговое окно JFileChooser предусматривает три метода для открытия данного окна в разных вариациях: showDialog — простое отображение этого окна (т.е. с установлением заголовка окна и имени кнопки), showCpenDialog — отображение окна открытия файла — значение строки заголовка окна и кнопки, равное Open (рис. 9.11).
Метод showSaveDialog — отображение окна сохранения файла — значение строки заголовка окна и кнопки, равное Save (рис 9.12).

Рис. 9.11. Диалоговое окно Open

Рис. 9.12. Диалоговое окно Save

Компонент JOptionPane.
Можно создать свое диалоговое окно с помощью этого компонента, а можно использовать стандартные окна (два типа таких окон мы рассмотрим — окна сообщений и окна запроса).

Приведем пример использования этого компонента.

1. Создайте приложение с именем проекта JOptionPane и таким же заголовком окна.
2. Измените компоновку на компоновку XYLayout.
3. Добавьте компонент JOptionPane к значку UI в окне структуры.
4. Добавьте в форму три компонента JButton со свойствами Text, равными «showMessageDialogs», showConfirmDialogs» и «showInputDialogs», и компонент JLabel со свойством Text, равным » «.
5. Создайте для кнопок обработчики событий actionPerformed (листинг 9.6).

Листинг 9.6.
Создание обработчика событий

Разберем этот код.
Есть пять типов сообщений:

ERROR_MESSAGE (сообщение об ошибке),
INFORMAT10N_MESSAGE (информационное сообщение),
PLAIN_MESSAGE (свое сообщение без каких-либо отличительных знаков — например, значка),
QUESTI0N_MESSAGE (вопрос пользователю) и
WARNING__MESSAGE (предупредительное окно).

Картинки можно создавать на основе класса ImageIcon, в параметрах указывая имя файла. Если диапазон возможных значений для окна ввода указан — появляется список, если нет — текстовое поле.

Далее представлены все диалоговые окна, которые появляются на экране, в качестве картинок из файлов my.gif и picture.gif. Также представлены измененные картинки «Водяные лилии» и «Закат», которые прилагаются к набору картинок WindowsХР (рис. 9.13- 9.21).

Рис. 9.13. Информационное сообщение

Рис. 9.14. Сообщение об ошибке

Рис. 9.15. Сообщение с вопросом

Рис. 9.16. Восклицательное сообщение

Рис. 9.17. Сообщение прочего типа

Рис. 9.18. Информационное окно с кнопками подтверждения или отказа

Рис. 9.19. Окно с требованием обязательного выбора одного из двух вариантов

Рис. 9.20. Окно с предложением выбрать значение из списка

Рис. 9.21. Окно для ввода информации

Сергей Владимирцев
11.03.2011

Java/Первое окно

Так как в большинстве своем сегодняшние начинающие программисты не любят окно командной строки — приведу пример оконного приложения.

Начнем с простого [ править ]

import javax.swing.JFrame; public class MyWindowApp extends JFrame  //Наследуя от JFrame мы получаем всю функциональность окна public MyWindowApp() super("My First Window"); //Заголовок окна setBounds(100, 100, 200, 200); //Если не выставить //размер и положение //то окно будет мелкое и незаметное setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //это нужно для того чтобы при //закрытии окна закрывалась и программа, //иначе она останется висеть в процессах > public static void main(String[] args)  //эта функция может быть и в другом классе MyWindowApp app = new MyWindowApp(); //Создаем экземпляр нашего приложения app.setVisible(true); //С этого момента приложение запущено! > > 

Вот у нас и получилось ничего не делающее приложение!

Делаем что-то полезное [ править ]

Это конечно замечательно уметь показывать пустое окно, но мы хотим, чтобы оно приносило пользу! Создадим форму для подсчета ворон на заборе. Для этого будем отображать текущее количество ворон и с помощью двух кнопок добавлять или вычитать по одной.

Дизайн [ править ]

Это то, что мы примерно хотим увидеть:

Вороносчет
Ворон на заборе : 666
Ворона прилетела Ворона улетела

Скелет программы [ править ]

import java.awt.*; import java.awt.event.*; import javax.swing.*; public class VoronCalc extends JFrame  private int voron = 0; private JLabel countLabel; private JButton addCrow; private JButton removeCrow; public VoronCalc() super("Crow calculator"); //Подготавливаем компоненты объекта countLabel = new JLabel("Crows:" + voron); addCrow = new JButton("Add Crow"); removeCrow = new JButton("Remove Crow"); //Подготавливаем временные компоненты JPanel buttonsPanel = new JPanel(new FlowLayout()); //Расставляем компоненты по местам buttonsPanel.add(countLabel, BorderLayout.NORTH); //О размещении компонент поговорим позже buttonsPanel.add(addCrow); buttonsPanel.add(removeCrow); add(buttonsPanel, BorderLayout.SOUTH); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); > public static void main(String[] args)  VoronCalc app = new VoronCalc(); app.setVisible(true); app.pack(); //Эта команда подбирает оптимальный размер в зависимости от содержимого окна > > 

После компиляции и запуска — получится что-то такое:

Добавляем функциональность [ править ]

Пришло время добавить немного интерактивности. Нам нужно сделать 3 вещи:

  1. Научить кнопку addCrow добавлять 1 к переменной voron.
  2. Научить кнопку removeCrow вычитать 1 из переменной voron.
  3. Научить countLabel — обновлять свое значение в зависимости от содержимого переменной voron.
addCrow [ править ]

Добавляем listener для кнопки addCrow.

addCrow.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e)  voron = voron+1; //Добавляем одну ворону countLabel.setText("Crows:" + voron); //Сообщаем приложению, что количество ворон изменилось > >); 
removeCrow [ править ]

Добавляем listener для кнопки removeCrow.

removeCrow.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e)  if( voron > 0 )  voron = voron - 1; countLabel.setText("Crows:" + voron); //Сообщаем приложению, что количество ворон изменилось > > >); 
updateCrowCounter [ править ]
private void updateCrowCounter()  countLabel.setText("Crows:" + voron); > 

Конечный результат [ править ]

  • VoronCalc.java — главный класс программы

Как создать окно в java

Информационное диалоговое окно требует минимального кода

Диалоговое окно является независимым подокном, предназначенным, чтобы перенести временное уведомление кроме основного Окна приложения Swing. Большинство Диалоговых окон представляет сообщение об ошибке или предупреждение пользователю, но Диалоговые окна могут представить изображения, деревья каталогов, или примерно что-либо совместимое с основным Приложением Swing, которое управляет ими. Для удобства несколько компонентных классов Swing могут непосредственно инстанцировать и вывести на экран диалоговые окна. Чтобы создать простые, стандартные диалоговые окна, Вы используете JOptionPane class. ProgressMonitor class может поднять диалоговое окно, которое показывает продвижение работы. Два других класса, JColorChooser и JFileChooser , также предоставьте стандартные диалоговые окна. Чтобы перевести диалоговое окно печати в рабочее состояние, можно использовать API Печати. Чтобы создать пользовательское диалоговое окно, используйте JDialog class непосредственно. Код для простых диалоговых окон может быть минимальным. Например, вот информационное диалоговое окно: Вот код, который создает и показывает это:

JOptionPane.showMessageDialog(frame, "Eggs are not supposed to be green.");
  • Краткий обзор Диалоговых окон
  • Пример DialogDemo
  • Функции JOptionPane
  • Создание и Показ Простых Диалоговых окон
  • Настройка Текста кнопки
  • Получение Ввода Пользователя от Диалогового окна
  • Остановка Автоматического Диалогового Закрытия
  • Диалоговый API
  • Примеры то Использование Диалоговые окна

Краткий обзор Диалоговых окон

Каждое диалоговое окно зависит от компонента Фрейма. Когда тот Фрейм уничтожается, так его зависимые Диалоговые окна. Когда фрейм представляется в виде значка, его зависимые Диалоговые окна также исчезают из экрана. Когда фрейм является deiconified, его зависимые Диалоговые окна возвращаются к экрану. Колебание JDialog class наследовало это поведение от AWT Dialog class.

Диалоговое окно может быть модальным. Когда модальное Диалоговое окно видимо, оно блокирует ввод данных пользователем ко всем другим окнам в программе. JOptionPane создает JDialog s, которые модальны. Чтобы создать немодальное Диалоговое окно, следует использовать JDialog class непосредственно.

Запускаясь с JDK 6, можно изменить поведение модальности диалогового окна, используя новый API Модальности. См. Новый API Модальности для деталей.

JDialog class является подклассом AWT java.awt.Dialog class. Это добавляет корневой контейнер области и поддержку операции закрытия значения по умолчанию к Dialog объект. Они — те же самые функции это JFrame имеет, и использование JDialog непосредственно очень подобно использованию JFrame . Если Вы собираетесь использовать JDialog непосредственно, тогда следует понять материал в Использовании Высокоуровневых Контейнеров и Как Сделать Фреймы, особенно Отвечая на Закрывающие окно События.

Даже когда Вы используете JOptionPane чтобы реализовать диалоговое окно, Вы все еще используете a JDialog негласно. Причина — это JOptionPane просто контейнер, который может автоматически создать a JDialog и добавьте себя к JDialog ‘s область контента.

Пример DialogDemo

Вот изображение приложения, которое выводит на экран диалоговые окна.

DialogDemo позволяет Вам переводить много видов в рабочее состояние диалоговых окон

Попробуйте это::

  1. Нажмите кнопку Launch, чтобы работать, Диалоговый Демонстрационный пример, используя Сеть Java™ Запускаются ( загрузите JDK 6 или позже ). Альтернативно, чтобы скомпилировать и выполнить пример самостоятельно, консультируйтесь, пример индексируют.
    Try this:
    1. Run DialogDemo ( download JDK 6 or later ). Or, to compile and run the example yourself, consult the example index. —>
    2. Щелкните по Шоу это! кнопка.
      Появится модальное диалоговое окно. Пока Вы не закроете это, приложение будет безразлично, хотя это перекрасит себя в случае необходимости. Можно закрыть диалоговое окно или нажимая кнопку в диалоговом окне или явно, такой как при использовании художественных оформлений диалогового окна.
    3. В области More Dialogs щелкните по нижнему переключателю и затем Шоу это! кнопка.
      Появится немодальное диалоговое окно. Отметьте, что окно DialogDemo остается полностью функциональным, в то время как немодальное диалоговое окно произошло.
    4. В то время как немодальное диалоговое окно показывает, представьте окно DialogDemo в виде значка.
      Диалоговое окно не исчезнет из экрана до Вас deiconify окно DialogDemo.

    Функции JOptionPane

    Используя JOptionPane , можно быстро создать и настроить несколько различных видов диалоговых окон. JOptionPane оказывает поддержку для того, чтобы разметить стандартные диалоговые окна, обеспечивая значки, определяя диалоговый title и текст, и настраивая текст кнопки. Другие функции позволяют Вам настраивать компоненты диалоговые дисплеи и определять, где диалоговое окно должно казаться экранным. Можно даже определить что область опции, помещенная непосредственно во внутреннюю рамку ( JInternalFrame ) вместо a JDialog .

    Когда Вы создаете a JOptionPane , стиль определенный код добавляет компоненты к JOptionPane и определяет расположение тех компонентов.

    JOptionPane ‘s поддержка значка позволяет Вам легко определять, какой значок диалоговое окно выводит на экран. Можно использовать пользовательский значок, никакой значок вообще, или любой из четырех стандартов JOptionPane значки (вопрос, информация, предупреждение, и ошибка). У каждого стили есть свои собственные версии четырех стандартных значков. Следующие данные показывают значки, используемые в Java (и Windows) стиль.

    Значки используются JOptionPane

    Описание значка Стиль Java Стиль Windows
    вопрос
    информация
    предупреждение
    ошибка

    Создание и Показ Простых Диалоговых окон

    Для самых простых модальных диалоговых окон Вы создаете и показываете диалоговое окно, используя один из JOptionPane ‘s showXxxDialog методы. Если Ваше диалоговое окно должно быть внутренней рамкой, то добавьте Internal после show — например, showMessageDialog изменения к showInternalMessageDialog . Если Вы должны управлять закрывающим диалоговое окно поведением или если Вы не хотите, чтобы диалоговое окно было модально, то следует непосредственно инстанцировать JOptionPane и добавьте это к a JDialog экземпляр. Затем вызовите setVisible(true) на JDialog заставить это появиться.

    Самые полезные два showXxxDialog методы showMessageDialog и showOptionDialog . showMessageDialog метод выводит на экран простое, диалоговое окно с одной кнопкой. showOptionDialog метод выводит на экран специализированное диалоговое окно — он может вывести на экран множество кнопок со специализированным текстом кнопки, и может содержать стандартное текстовое сообщение или набор компонентов.

    Другие два showXxxDialog методы используются менее часто. showConfirmDialog метод просит, чтобы пользователь подтвердил что-то, но представляет текст стандартной кнопки (Да/Нет или локализованный эквивалент, например), а не текст кнопки, настроенный к пользовательской ситуации (Запустите/Отмените, например). Четвертый метод, showInputDialog , разрабатывается, чтобы вывести на экран модальное диалоговое окно, которое получает строку от пользователя, используя или текстовое поле, недоступное для редактирования поле комбинированного списка или список.

    Вот некоторые примеры, взятые от DialogDemo.java , из использования showMessageDialog , showOptionDialog , и JOptionPane конструктор. Для большего количества примера кода см. DialogDemo.java и другие программы, перечисленные в Примерах то Использование Диалоговые окна.

    showMessageDialog Выводит на экран модальное диалоговое окно с одной кнопкой, которая маркируется «OK» (или локализованный эквивалент). Можно легко определить сообщение, значок, и title, который выводит на экран диалоговое окно. Вот некоторые примеры использования showMessageDialog :

    //default title and icon JOptionPane.showMessageDialog(frame, "Eggs are not supposed to be green.");
    //custom title, warning icon JOptionPane.showMessageDialog(frame, "Eggs are not supposed to be green.", "Inane warning", JOptionPane.WARNING_MESSAGE);
    //custom title, error icon JOptionPane.showMessageDialog(frame, "Eggs are not supposed to be green.", "Inane error", JOptionPane.ERROR_MESSAGE);
    //custom title, no icon JOptionPane.showMessageDialog(frame, "Eggs are not supposed to be green.", "A plain message", JOptionPane.PLAIN_MESSAGE);
    //custom title, custom icon JOptionPane.showMessageDialog(frame, "Eggs are not supposed to be green.", "Inane custom dialog", JOptionPane.INFORMATION_MESSAGE, icon);

    showOptionDialog Выводит на экран модальное диалоговое окно с указанными кнопками, значками, сообщением, title, и так далее. С этим методом можно изменить текст, который появляется на кнопках стандартных диалоговых окон. Можно также выполнить много других видов настройки.

    //Custom button text Object[] options = ; int n = JOptionPane.showOptionDialog(frame, "Would you like some green eggs to go " + "with that ham?", "A Silly Question", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, options[2]);

    JOptionPane (конструктор) Создает a JOptionPane с указанными кнопками, значками, сообщением, title, и так далее. Следует тогда добавить область опции к a JDialog , зарегистрируйте слушателя изменения свойства на области опции, и покажите диалоговое окно. См., что Останавливающееся Автоматическое Диалоговое окно Закрывается для деталей.

    final JOptionPane optionPane = new JOptionPane( "The only way to close this dialog is by\n" + "pressing one of the following buttons.\n" + "Do you understand?", JOptionPane.QUESTION_MESSAGE, JOptionPane.YES_NO_OPTION);

    Параметры всему из showXxxDialog методы и JOptionPane конструкторы стандартизируются, хотя число параметров за каждый метод и конструктора изменяется. Следующий список описывает каждый параметр. Чтобы видеть точный список параметров за определенный метод, см. Диалоговый API.

    Component parentComponent Первый параметр каждому showXxxDialog метод всегда является родительским компонентом, который должен быть Фреймом, компонентом во Фрейме, или нулем. Если Вы определите Фрейм или Диалоговое окно, то Диалоговое окно будет появляться по центру Фрейма и следовать за поведением фокуса того Фрейма. Если Вы определите компонент во Фрейме, то Диалоговое окно появится по центру того компонента и будет следовать за поведением фокуса Фрейма того компонента. Если Вы определите нуль, то стиль выберет соответствующую позицию для диалогового окна — обычно, центр экрана — и Диалоговое окно будет не обязательно следовать за поведением фокуса любого видимого Фрейма или Диалогового окна.

    JOptionPane конструкторы не включают этот параметр. Вместо этого Вы определяете родительский фрейм, когда Вы создаете JDialog это содержит JOptionPane , и Вы используете JDialog setLocationRelativeTo метод, чтобы установить диалоговую позицию.

    Object message Этот необходимый параметр определяет то, что диалоговое окно должно вывести на экран в его основной области. Обычно, Вы определяете строку, которая приводит к диалоговому окну, выводящему на экран метку с указанным текстом. Можно разделить сообщение более чем несколько строк, помещая новую строку ( \n ) символы в строке сообщения. Например:

    "Complete the sentence:\n \"Green eggs and. \""

    String title title диалогового окна. int optionType Определяет набор кнопок, которые появляются у основания диалогового окна. Выберите из одного из следующих стандартных наборов: DEFAULT_OPTION , YES_NO_OPTION , YES_NO_CANCEL_OPTION , OK_CANCEL_OPTION . int messageType Этот параметр определяет значок, выведенный на экран в диалоговом окне. Выберите из одного из следующих значений: PLAIN_MESSAGE (никакой значок), ERROR_MESSAGE , INFORMATION_MESSAGE , WARNING_MESSAGE , QUESTION_MESSAGE . Icon icon Значок, чтобы вывести на экран в диалоговом окне. Object[] options Обычно используемый, чтобы определить строку, выведенную на экран каждой кнопкой у основания диалогового окна. См. Текст кнопки Настройки в Стандартном Диалоговом окне для получения дополнительной информации. Может также использоваться, чтобы определить значки, которые будут выведены на экран кнопками или компонентами некнопки, которые будут добавлены к строке кнопки. Object initialValue Определяет значение по умолчанию, которое будет выбрано.

    Можно или позволить опции разделять дисплей на области ее значок значения по умолчанию или определять значок, используя тип сообщения или параметр значка. По умолчанию, область опции, создаваемая с showMessageDialog выводит на экран информационный значок, один создаваемый с showConfirmDialog или showInputDialog выводит на экран значок вопроса, и один создаваемый с a JOptionPane конструктор не выводит на экран значка. Чтобы определить, что диалоговое окно выводит на экран стандартный значок или никакой значок, определите тип сообщения, соответствующий значку, которого Вы требуете. Чтобы определить пользовательский значок, используйте параметр значка. Параметр значка имеет приоритет по типу сообщения; пока у параметра значка есть ненулевое значение, диалоговое окно выводит на экран указанный значок.

    Настройка Текста кнопки

    Когда Вы используете JOptionPane чтобы создать диалоговое окно, можно или использовать текст стандартной кнопки (который мог бы измениться стилем и локалью), или определите различный текст. По умолчанию тип области опции определяет, сколько кнопок появляется. Например, YES_NO_OPTION у диалоговых окон есть две кнопки, и YES_NO_CANCEL_OPTION у диалоговых окон есть три кнопки.

    Следующий код, взятый от DialogDemo.java , создает два Да/Нет диалоговые окна. Первое диалоговое окно реализуется с showConfirmDialog , который использует формулировку стили для этих двух кнопок. Второе диалоговое использование showOptionDialog таким образом, это может настроить формулировку. За исключением формулировки изменений, диалоговые окна идентичны.

    //default icon, custom title int n = JOptionPane.showConfirmDialog( frame, "Would you like green eggs and ham?", "An Inane Question", JOptionPane.YES_NO_OPTION);
    Object[] options = ; int n = JOptionPane.showOptionDialog(frame, "Would you like green eggs and ham?", "A Silly Question", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, //do not use a custom Icon options, //the titles of buttons options[0]); //default button title

    Поскольку предыдущие фрагменты кода показали, showMessageDialog , showConfirmDialog , и showOptionDialog методы возвращают целое число, указывающее на выбор пользователя. Значения для этого целого числа YES_OPTION , NO_OPTION , CANCEL_OPTION , OK_OPTION , и CLOSED_OPTION . За исключением CLOSED_OPTION , каждая опция соответствует кнопке нажатый пользователь. Когда CLOSED_OPTION возвращается, это указывает, что пользователь, закрытый диалоговое окно явно, а не выбирая кнопку в опции, разделяет на области.

    Даже если Вы изменяете строки, которые выводят на экран стандартные диалоговые кнопки, возвращаемое значение является все еще одним из предопределенных целых чисел. Например, a YES_NO_OPTION диалоговое окно всегда возвращает одно из следующих значений: YES_OPTION , NO_OPTION , или CLOSED_OPTION .

    Получение Ввода Пользователя от Диалогового окна

    Единственная форма showXxxDialog это не возвращается, целое число showInputDialog , который возвращается Object вместо этого. Это Object обычно a String отражение выбора пользователя. Вот пример использования showInputDialog создать диалоговое окно, которое позволяет пользователю выбирать одну из трех строк:

    Входное диалоговое окно с полем комбинированного списка

    Object[] possibilities = ; String s = (String)JOptionPane.showInputDialog( frame, "Complete the sentence:\n" + "\"Green eggs and. \"", "Customized Dialog", JOptionPane.PLAIN_MESSAGE, icon, possibilities, "ham"); //If a string was returned, say so. if ((s != null) && (s.length() > 0)) < setLabel("Green eggs and. " + s + "!"); return; >//If you're here, the return value was null/empty. setLabel("Come on, finish the sentence!");

    Если Вы не хотите ограничить варианты пользователя, можно или использовать форму showInputDialog метод, который берет меньше параметров или определяет null для массива объектов. В стили Java, занимая место null для possibilities результаты в диалоговом окне, которое имеет текстовое поле и похоже на это:

    Входное диалоговое окно с текстовым полем

    Поскольку пользователь может ввести что-либо в текстовое поле, Вы могли бы хотеть проверить возвращенное значение и попросить, чтобы пользователь попробовал еще раз, если это недопустимо. Другой подход должен создать пользовательское диалоговое окно, которое проверяет вводимых пользователем данных прежде, чем это возвратится. См. CustomDialog.java для примера проверки допустимости данных.

    Если Вы разрабатываете пользовательское диалоговое окно, Вы должны разработать API своего диалогового окна так, чтобы можно было запросить диалоговое окно о том, что выбрал пользователь. Например, CustomDialog имеет a getValidatedText метод, который возвращает текст вводимый пользователь.

    Остановка Автоматического Диалогового Закрытия

    По умолчанию, когда пользователь щелкает по a JOptionPane — создаваемая кнопка, диалоговые завершения. Но что, если Вы хотите проверить ответ пользователя прежде, чем закрыть диалоговое окно? В этом случае следует реализовать своего собственного слушателя изменения свойства так, чтобы, когда пользователь нажимает кнопку, диалоговое окно автоматически не закрылось.

    DialogDemo содержит два диалоговых окна, которые реализуют слушателя изменения свойства. Одно из этих диалоговых окон является пользовательским модальным диалоговым окном, реализованным в CustomDialog , это использует JOptionPane и чтобы получить стандартный значок и получить помощь расположения. Другое диалоговое окно, код которого ниже, использует стандарт Да/Нет JOptionPane . Хотя это диалоговое окно довольно бесполезно как записано, его код достаточно прост, что можно использовать его в качестве шаблона для более сложных диалоговых окон.

    Помимо установки свойства изменяют слушателя, следующий код также вызывает JDialog ‘s setDefaultCloseOperation метод и реализации слушатель окна, который обрабатывает окно близко, пытаются должным образом. Если Вы не хотите быть уведомленными, когда пользователь закрывает окно явно, то проигнорируйте полужирный код.

    final JOptionPane optionPane = new JOptionPane( «The only way to close this dialog is by\n» + «pressing one of the following buttons.\n» + «Do you understand?», JOptionPane.QUESTION_MESSAGE, JOptionPane.YES_NO_OPTION); final JDialog dialog = new JDialog(frame, «Click a button», true); dialog.setContentPane(optionPane); dialog.setDefaultCloseOperation( JDialog.DO_NOTHING_ON_CLOSE); dialog.addWindowListener(new WindowAdapter() < public void windowClosing(WindowEvent we) < setLabel("Thwarted user attempt to close window."); >>); optionPane.addPropertyChangeListener( new PropertyChangeListener() < public void propertyChange(PropertyChangeEvent e) < String prop = e.getPropertyName(); if (dialog.isVisible() && (e.getSource() == optionPane) && (prop.equals(JOptionPane.VALUE_PROPERTY))) < //If you were going to check something //before closing the window, you'd do //it here. dialog.setVisible(false); >> >); dialog.pack(); dialog.setVisible(true); int value = ((Integer)optionPane.getValue()).intValue(); if (value == JOptionPane.YES_OPTION) < setLabel("Good."); >else if (value == JOptionPane.NO_OPTION)

    Диалоговый API

    Следующие таблицы приводят обычно используемый JOptionPane и JDialog конструкторы и методы. Другие методы, которые Вы, вероятно, вызовете, определяются Dialog , Window и Component классы и включают pack , setSize , и setVisible .

    API перечисляется следующим образом:

    • Показ Стандартных Модальных Диалоговых окон (использование JOptionPane Методы класса)
    • Методы для Использования JOptionPane s Непосредственно
    • Часто Используемый JDialog Конструкторы и Методы
    Показ Стандартных Модальных Диалоговых окон (Используя JOptionPane Методы класса)

    Метод Цель
    статическая пустота showMessageDialog (Компонент, Объект)
    статическая пустота showMessageDialog (Компонент, Объект, Строка, интервал)
    статическая пустота showMessageDialog (Компонент, Объект, Строка, интервал, Значок)
    Покажите одну кнопку, модальное диалоговое окно, которое дает пользователю некоторую информацию. Параметры определяют (чтобы) родительский компонент, сообщение, title, передает тип, и значок для диалогового окна. См. Создание и Показ Простых Диалоговых окон для обсуждения параметров и их эффектов.
    статический интервал showOptionDialog (Компонент, Объект, Строка, интервал, интервал, Значок, Объект [], Объект) Покажите специализированное модальное диалоговое окно. Параметры определяют (чтобы) родительский компонент, сообщение, title, тип опции, передает тип, значок, опции, и начальное значение для диалогового окна. См. Создание и Показ Простых Диалоговых окон для обсуждения параметров и их эффектов.
    статический интервал showConfirmDialog (Компонент, Объект)
    статический интервал showConfirmDialog (Компонент, Объект, Строка, интервал)
    статический интервал showConfirmDialog (Компонент, Объект, Строка, интервал, интервал)
    статический интервал showConfirmDialog (Компонент, Объект, Строка, интервал, интервал, Значок)
    Покажите модальное диалоговое окно, которое задает пользователю вопрос. Параметры определяют (чтобы) родительский компонент, сообщение, title, тип опции, передает тип, и значок для диалогового окна. См. Создание и Показ Простых Диалоговых окон для обсуждения параметров и их эффектов.
    статическая Строка showInputDialog (Объект)
    статическая Строка showInputDialog (Компонент, Объект)
    статическая Строка showInputDialog (Компонент, Объект, Строка, интервал)
    статическая Строка showInputDialog (Компонент, Объект, Строка, интервал, Значок, Объект [], Объект)
    Покажите модальное диалоговое окно, которое запрашивает пользователя ввод. Версия единственного параметра определяет только сообщение с родительским компонентом, который, как предполагают, был нулем. Параметры за другие версии определяют (чтобы) родительский компонент, сообщение, title, передает тип, значок, опции, и начальное значение для диалогового окна. См. Создание и Показ Простых Диалоговых окон для обсуждения параметров и их эффектов.
    статическая пустота showInternalMessageDialog (. )
    статическая пустота showInternalOptionDialog (. )
    статическая пустота showInternalConfirmDialog (. )
    статическая Строка showInternalInputDialog (. )
    Реализуйте стандартное диалоговое окно как внутреннюю рамку. См. JOptionPane Документация API для точного списка параметров.
    Методы для Использования JOptionPane s Непосредственно

    Метод или Конструктор Цель
    JOptionPane ()
    JOptionPane (Объект)
    JOptionPane (Объект, интервал)
    JOptionPane (Объект, интервал, интервал)
    JOptionPane (Объект, интервал, интервал, Значок)
    JOptionPane (Объект, интервал, интервал, Значок, Объект [])
    JOptionPane (Объект, интервал, интервал, Значок, Объект [], Объект)
    Создает a JOptionPane экземпляр. См. Создание и Показ Простых Диалоговых окон для обсуждения параметров и их эффектов.
    статический Фрейм getFrameForComponent (Компонент)
    статический JDesktopPane getDesktopPaneForComponent (Компонент)
    Удобный JOptionPane Методы class, которые находят фрейм или настольную область, соответственно, в котором находится указанный компонент.
    интервал getMaxCharactersPerLineCount () Определяет, где разрывы строки будут автоматически вставлены в текст области опции. (Значение по умолчанию Integer.MAX_VALUE .) Чтобы использовать этот метод, следует создать a JOptionPane подкласс. Например, следующий код приводит к области опции с одним словом на строку, вследствие того, что каждое слово в строке является 5 символами или меньше:
    JOptionPane op = new JOptionPane("This is the text.") < public int getMaxCharactersPerLineCount() < return 5; >>;
    Часто Используемый JDialog Конструкторы и Методы

    Метод или Конструктор Цель
    JDialog ()
    JDialog (Диалоговое окно)
    JDialog (Диалоговое окно, булево)
    JDialog (Диалоговое окно, Строка)
    JDialog (Диалоговое окно, Строка, булева)
    JDialog (Диалоговое окно, Строка, булева, GraphicsConfiguration)
    JDialog (Фрейм)
    JDialog (Фрейм, булев)
    JDialog (Фрейм, Строка)
    JDialog (Фрейм, Строка, булева)
    JDialog (Фрейм, Строка, булева, GraphicsConfiguration)
    JDialog (Владелец окна)
    JDialog (Владелец окна, Диалоговое окно. ModalityType modalityType)
    JDialog (Владелец окна, Строка title)
    JDialog (Владелец окна, Строка title, Диалоговое окно. ModalityType modalityType)
    JDialog (Владелец окна, Строка title, Диалоговое окно. ModalityType modalityType, gc GraphicsConfiguration)
    Создает a JDialog экземпляр. Frame параметром, если таковые вообще имеются, является фрейм (обычно a JFrame объект), от которого зависит диалоговое окно. Приведите булев аргумент true определить модальное диалоговое окно, false или отсутствующий, чтобы определить немодальное диалоговое окно. Можно также определить title диалогового окна, используя строковый параметр.
    освободите setContentPane (Контейнер)
    Контейнер getContentPane ()
    Получите и установите область контента, которая обычно является контейнером компонентов всего диалогового окна. См. Используя Высокоуровневые Контейнеры для получения дополнительной информации.
    освободите setDefaultCloseOperation (интервал)
    интервал getDefaultCloseOperation ()
    Получите и установите то, что происходит, когда пользователь пытается закрыть диалоговое окно. Возможные значения: DISPOSE_ON_CLOSE , DO_NOTHING_ON_CLOSE , HIDE_ON_CLOSE (значение по умолчанию). См. Отвечающие Закрывающие окно События для получения дополнительной информации.
    освободите setLocationRelativeTo (Компонент) Центрирует диалоговое окно по указанному компоненту.
    статическая пустота setDefaultLookAndFeelDecorated (булев)
    статический булев isDefaultLookAndFeelDecorated ()
    Набор или получает подсказку относительно того, должны ли художественные оформления окна диалогового окна (такие как границы, или виджеты, чтобы закрыть окно) быть обеспечены текущим стилем. Иначе художественные оформления диалогового окна будут обеспечены текущим менеджером окон. См. Определение Художественных оформлений Окна для получения дополнительной информации.

    Примеры то Использование Диалоговые окна

    Эта таблица приводит примеры то использование JOptionPane или JDialog . Чтобы найти другие примеры, которые используют диалоговые окна, см. списки в качестве примера для индикаторов выполнения, покрасьте селекторов, и селекторов файла.

    Пример Где Описано Примечания
    DialogDemo ,
    CustomDialog
    Этот раздел Создает много видов диалоговых окон, используя JOptionPane и JDialog .
    Framework Переводит диалоговое окно подтверждения в рабочее состояние, когда пользователь выбирает пункт меню Quit.
    ListDialog Как Использовать BoxLayout Реализует модальное диалоговое окно, содержащее список прокрутки и две кнопки. Не использует JOptionPane , за исключением служебного метода getFrameForComponent .

    Ваше использование этой страницы и всего материала на страницах под «Учебным баннером» Java подвергается этим официальным уведомлениям.

    Авторское право © 1995, 2012 Oracle и/или его филиалы. Все права защищены.

    Предыдущая страница: Как Использовать Поля комбинированного списка
    Следующая страница: Как Использовать текстовые Области и Редактор Пэйнс

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *