Если данные сводятся к ответы «да» или «нет», используйте компонент — флажок опций(checkbox). Чтобы установить флажок, нужно щелкнуть мышью на компоненте, а для того чтобы сбросить флажок — щелкнуть повторно. Установить или сбросить флажок можно также с помощью клавиши пробела, нажав ее в момент, когда на компоненте находится фокус ввода.
На рис.1 показано простое окно программы с двумя флажками опций, один из которых включает и отключает курсив, а другой — полужирный шрифт.
Обратите внимание на то, что первый флажок обладает фокусом ввода. Об этом говорит прямоугольная рамка вокруг его метки. Каждый раз, когда пользователь щелкает на флажке, содержимое окна обновляется с учетом нового атрибута шрифта.
Флажки опций сопровождаются метками, указывающими их предназначение. Текст метки задается в конструкторе:
1 |
bold = new JCheckBox("Bold"); |
Для установки и сброса флажка используется метод setSelected(). Например:
1 |
bold.setSelected(true); |
Метод isSelected() позволяет определить текущее состояние каждого флажка. Если значение равно false, значит он сброшен, а если true — установлен.
Щелкая на флажке, пользователь инициирует события. Как всегда, вы можете связать с данным компонентом объект-слушатель. В нашей программе для двух кнопок предусмотрен один и тот же слушатель действий:
1 2 3 |
ActionListener listener = ... bold.addActionListener(listener); italic.addActionListener(listener); |
В методе actionPerformed() обработчика запрашивается текущее состояние флажков bold и italic, а затем устанавливается шрифт, которым должен отображаться обычный текст: полужирный, курсив или полужирный курсив.
1 2 3 4 5 6 7 |
public void actionPerformed(ActionEvent event) { int mode = 0; if(bold.isSelected()) mode += Font.BOLD; if(italic.isSelected()) mode += Font.ITALIC; label.setFont(new Font("Serif", mode, FONTSIZE)); } |
Ниже приведен полный исходник программы, демонстрирующей работу с флажками опции:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class CheckBoxTest { public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { CheckBoxFrame frame = new CheckBoxFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } }); } } class CheckBoxFrame extends JFrame { public CheckBoxFrame() { setTitle("CheckBoxTest"); setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT); // Добавление текстовой метки. label = new JLabel("Java is the programming language"); label.setFont(new Font("Serif", Font.PLAIN, FONTSIZE)); add(label, BorderLayout.CENTER); // Данный слушатель устанавилвает атрибуты шрифта, // которым отображается текст метки, в соответствии // с состоянием флажков опций. ActionListener listener = new ActionListener() { public void actionPerformed(ActionEvent event) { int mode = 0; if(bold.isSelected()) mode += Font.BOLD; if(italic.isSelected()) mode += Font.ITALIC; label.setFont(new Font("Serif", mode, FONTSIZE)); } }; // Добавление флажков опций JPanel buttonPanel = new JPanel(); bold = new JCheckBox("Bold"); bold.addActionListener(listener); buttonPanel.add(bold); italic = new JCheckBox("Italic"); italic.addActionListener(listener); buttonPanel.add(italic); add(buttonPanel, BorderLayout.SOUTH); } public static final int DEFAULT_WIDTH = 300; public static final int DEFAULT_HEIGHT = 200; private JLabel label; private JCheckBox bold; private JCheckBox italic; private static final int FONTSIZE = 12; } |