Использование JButton

В этом посте хотел бы рассмотреть использование кнопки JButton на примере простого приложения. Здесь я попробую показать наиболее часто используемые методы при работе с JButton – установка иконки, выравнивания текста, установка размеров и других. Если честно, то пример приложения был подсмотрен в Java Tutorial.

Внешний вид тестового приложения представлен на рисунке ниже.

jbutton_using

Как видно из тестового приложения, кнопка JButton может отображать надпись, а также иконку. Расположение надписи относительно иконки настраивается. Swing даёт возможность настроить положение надписи по вертикали и горизонтали. Такая настройка осуществляется с помощью методов setVerticalTextPosition и setHorizontalTextPosition соответственно. В качестве параметров данным методам передаются константы класса AbstractButton, от которого наследуется JButton. Думаю стоит сказать про установку текста и иконки. Текст кнопки указывается при создании кнопки, но это же можно сделать при помощи метода setText после создания JButton. Установка иконки осуществляется с помощью метода setIcon. В качестве иконки может использоваться любое пользовательское изображение. К слову сказать в тестовом приложении иконка получается с помощью конструкции UIManager.getIcon(), которая возвращает объект Icon. Чтобы сделать кнопку активной и позволить реагировать на действия пользователя или наоборот деактивировать её используется метод setEnabled, которому в качестве параметра передается булевский флаг. Если хотим сделать JButton активным, то передаем true иначе false. Интересным моментом является то, что внешний вид неактивности определяет сам Swing. Как было сказано выше, имеется возможность задать размер JButton. Делается это при помощи метода setPreferredSize, которому в качестве аргумента передается объект Dimension. Первый параметр конструктора Dimension это ширина, второй – высота. Именно этот метод испольуется для выставления размеров средней кнопке.

Ну и по традиции код простого тестового приложения.

import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.AbstractButton;
import javax.swing.Icon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.UIManager;

public class TestFrame {

     public static void createGUI() {
          JFrame.setDefaultLookAndFeelDecorated(true);
          final JFrame frame = new JFrame("Test frame");
          
          JPanel panel = new JPanel();
          
          Icon leftIcon = UIManager.getIcon("OptionPane.errorIcon");
          
          final JButton leftButton = new JButton("Enable");
          leftButton.setVerticalTextPosition(AbstractButton.CENTER);
          leftButton.setHorizontalTextPosition(AbstractButton.LEADING);
          leftButton.setIcon(leftIcon);
          panel.add(leftButton);
          
          Icon centerIcon = UIManager.getIcon("OptionPane.informationIcon");
          
          final JButton centerButton = new JButton("Center");
          centerButton.setVerticalTextPosition(AbstractButton.BOTTOM);
          centerButton.setHorizontalTextPosition(AbstractButton.CENTER);
          centerButton.setIcon(centerIcon);
          centerButton.setEnabled(false);
          panel.add(centerButton);
          
          centerButton.setPreferredSize(new Dimension(100, 100));
          
          Icon rightIcon = UIManager.getIcon("OptionPane.questionIcon");
          
          final JButton rightButton = new JButton("Disable");
          rightButton.setIcon(rightIcon);
          rightButton.setEnabled(false);          
          panel.add(rightButton);
          
          leftButton.addActionListener(new ActionListener() {
               public void actionPerformed(ActionEvent e) {
                    leftButton.setEnabled(false);
                    centerButton.setEnabled(true);
                    rightButton.setEnabled(true);
               }
          });
          
          rightButton.addActionListener(new ActionListener() {
               public void actionPerformed(ActionEvent e) {
                    leftButton.setEnabled(true);
                    centerButton.setEnabled(false);
                    rightButton.setEnabled(false);
               }
          });
          
          frame.getContentPane().add(panel);
          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          frame.setPreferredSize(new Dimension(350, 145));          
          
          frame.pack();
          
          frame.setLocationRelativeTo(null);
          
          frame.setVisible(true);
     }
     
     public static void main(String[] args) {
          javax.swing.SwingUtilities.invokeLater(new Runnable() {
               public void run() {
                    createGUI();
               }
          });
     }
}

5 Responses to Использование JButton

  1. Роджер:

    Огромное спасибо за урок! Будет ли продолжение?

  2. Роджер:

    Продолжение уроков!

  3. tyrgor85:

    А можно задавать кнопку с помощью метода .setBounds()? Точнее…как правильно используется этот метод? Не могу разобраться, рботает через раз и не всегда корректно.

  4. Добрый день. Подскажите пожалуйста, как сделать что бы картинка не увеличивала кнопку и уменьшалась под размер кнопки, что бы границы не выходили за предел кнопки?

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

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: