Відповіді на всі випадки життя прямо на цьому сайті

Як в Java можна створити графічний інтерфейс Swing

Кроки

Метод 1 з 2: Створення загального фрейму

  • Create a Swing GUI in Java Step 1.jpg 1 Створіть клас, що розширює клас JFrame. Цей клас буде містити всі ваші компоненти графічного інтерфейсу (GUI), такі як кнопки, текстові поля.
  • 2 Продумайте загальний зовнішній вигляд вашого першого додатка. Непогано було б почати з центральної панелі типу BorderLayout з іншого панеллю в нижній її частині (BorderLayout.South). Ця друга панель буде мати тип FlowLayout і містити кілька кнопок, прапорців та інших контрольних елементів. І нарешті, розташуйте великий компонент JTextArea посередині центрального компонента. Щоб взаємодіяти з користувачем за допомогою тексту, ви зможете використовувати методи getText() і setText().
  • Create a Swing GUI in Java Step 3.jpg 3 Напишіть конструктор для вашого класу. Цей конструктор повинен створити всі панелі і компоненти, які ви запланували, розташувати їх правильно і додати останню панель, яка "прикріплює все" до вашого кадру (myFrame.getContentPane().add(myLargePanel, BorderLayout.Center).
  • Create a Swing GUI in Java Step 4.jpg 4 Напишіть метод main, який буде точкою входу програми. У цьому методі створіть екземпляр кадру, встановіть його початкові розмір і положення (використовуйте .setSize(x,y) і .setLocation(width, height) ), і змусьте його з'явитися на екрані, викликавши .setVisible(true).
  • Метод 2 з 2: Програмування відповідей на дії користувача

  • Create a Swing GUI in Java Step 5.jpg 1 Зробіть ваш кадр реалізує інтерфейс ActionListener. Це дозволить вашому класу "слухати" дії компонентів.
  • Create a Swing GUI in Java Step 6.jpg 2 Для кожної кнопки, прапорці або іншого контрольного елемента, яких ви створили, викличте метод .addActionListener, передавши ваш кадр (this) в якості параметра.
  • 3 Перевизначити абстрактний метод класу ActionListener, який називається actionPerformed(ActionEvent event). У цьому методі вам слід додати умовні вирази 'if', щоб перевірити, звідки прийшло подія. У цьому умовному операторі 'if' має бути умова кшталт такого: "if (event.getSource() == button1)". Тут перевіряється, звідки прийшло подія, і прийшло воно від кнопки. Всередині виразу 'if' виконуйте будь-які дії, які вам необхідні при натисканні на кнопку.

    Create a Swing GUI in Java Step 7.jpg
  • Create a Swing GUI in Java Step 8.jpg 4 У JTextArea є метод .setText("myText"), який є непоганим способом запрограмувати якийсь видимий відповідь на ваше дію.
  • Поради

    • Зовсім не набагато складніше реалізувати інтерфейс MouseListener і використовувати .addMouseListener, щоб зареєструвати його для будь-якої компоненти.
    • Якщо вам потрібно запросити від користувача ввести якийсь рядок, викличте статичний метод JOptionPane.showInputDialog(this, "My message"). першим параметром повинен бути кадр вашого додатка або яка-небудь панель (поле для вводу з'явиться посередині батьківського елемента). Метод повертає значення, яке ввів у діалоговому вікні.
    • Цілком можливо розмістити всі компоненти на одній панелі, що використовує тип GridBagLayout, але цим класом важче управляти.
    • Якщо ви хочете намалювати власні графічні об'єкти (наприклад, шахову дошку), почитайте про компоненті Canvas. Він може бути розміщений у вашому додатку, як будь-який інший компонент, але вам потрібно буде написати метод .paint, який повністю відповідає за його видачу.
    • У багатьох реальних додатках найбільш корисним компонентом Swing є JTable. Після вивчення основ, продовжуйте працювати з ним.

    Попередження

    • Деякі засоби розробки пропонують можливість скласти графічний інтерфейс Swing способом, "зручним для користувача". Проте, часто вони не можуть належним чином зробити панель з просунутими можливостями. Ці можливості включають дерева, таблиці, списки і комбіновані списки, які змінюють свій вміст у міру роботи програми, а також компоненти з моделями даних користувача і т. д. Код, написаний при такій "дружній для користувача" способі, стане справжнім кошмаром, якщо вам потім буде потрібно дописати його вручну. Тому занадто не захоплюйтеся подібними дизайнерами графічного інтерфейсу, дружніми для користувача", тому що це обмежить ваші можливості з-за їх обмежених можливостей.
    • Swing - це однопотоковий додаток. Якщо обробка дії у вас займає занадто багато часу, воно "зависне", поки не відбудеться вихід з методу .actionPerformed. Вивчайте і використовуйте багатопоточність java, щоб Swing залишався живим, поки працює якийсь трудомісткий процес.
    • Більшість методів компонентів Swing можна безпечно викликати тільки з потоку диспетчеризації подій (метод .actionPerformed та інші схожі методи слухача). Якщо вам потрібно викликати їх з якогось іншого потоку (наприклад, щоб оновити індикатор прогресу або показати результати якогось тривалого процесу), почитайте про SwingUtils.invokeLater.


    Вихідний код

    import java.awt.BorderLayout; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextArea; /** * Дуже просте додаток java swing. * Містить кнопку і прапорець. Відповідає * на зміни цих контрольних елементів * зміною тексту в головному текстовому полі. * * @author audriusa */ public class WikiHow extends JFrame implements ActionListener /** * Кнопка. */ JButton myButton = new JButton("Button"); /** * Прапорець. */ JCheckBox myCheckBox = new JCheckBox("Check"); /** * Текстове поле. */ JTextArea myText = new JTextArea("My text"); /** * Нижня панель, що містить кнопку. */ JPanel bottomPanel = new JPanel(); /** * Батьківська панель, що містить усі. */ JPanel holdAll = new JPanel(); /** * Конструктор. */ public WikiHow() bottomPanel.setLayout(new FlowLayout()); bottomPanel.add(myCheckBox); bottomPanel.add(myButton); holdAll.setLayout(new BorderLayout()); holdAll.add(bottomPanel, BorderLayout.SOUTH); holdAll.add(myText, BorderLayout.CENTER); getContentPane().add(holdAll, BorderLayout.CENTER); myButton.addActionListener(this); myCheckBox.addActionListener(this); setDefaultCloseOperation(DISPOSE_ON_CLOSE); /** * Програма * @param args Параметри старту програми, які не використовуються. */ public static void main(String[] args) WikiHow myApplication = new WikiHow(); // Вказуємо, де воно має з'явитися: myApplication.setLocation(10, 10); myApplication.setSize(300, 300); // Показати! myApplication.setVisible(true); /** * Будь неабстрактный клас, який реалізує ActionListener * повинен мати цей метод. * * @param e Подія. */ public void actionPerformed(ActionEvent e) if (e.getSource() == myButton) myText.setText("A button click"); else if (e.getSource() == myCheckBox) myText.setText("The checkbox state changed to" myCheckBox.isSelected()); else myText.setText("E ...?"); } [[pt:Criar uma Interface GUI Com Swing no Java]] [[es:crear un interfaz Swing con Java]] [[it:Creare una GUI con Swing in Java]] [[en:Create a Swing GUI in Java]]


    Додати коментар
    Ваше ім'я:  
    Напівжирний Нахилений текст Підкреслений текст Перекреслений текст | Вирівнювання по лівому краю По центру Вирівнювання по правому краю | Вставка смайликів Вибір кольору | Прихований текст Вставка цитати Перетворити вибраний текст з транслітерації в кирилицю Вставка спойлера

    2+2*2=?