Если данные сводятся к ответы "да" или "нет", используйте компонент - флажок опций(checkbox). Чтобы установить флажок, нужно щелкнуть мышью на компоненте, а для того чтобы сбросить флажок - щелкнуть повторно. Установить или сбросить флажок можно также с помощью клавиши пробела, нажав ее в момент, когда на компоненте находится фокус ввода.
На рис.1 показано простое окно программы с двумя флажками опций, один из которых включает и отключает курсив, а другой - полужирный шрифт.
Обратите внимание на то, что первый флажок обладает фокусом ввода. Об этом говорит прямоугольная рамка вокруг его метки. Каждый раз, когда пользователь щелкает на флажке, содержимое окна обновляется с учетом нового атрибута шрифта.
Флажки опций сопровождаются метками, указывающими их предназначение. Текст метки задается в конструкторе:
bold = new JCheckBox("Bold"); |
Для установки и сброса флажка используется метод setSelected(). Например:
bold.setSelected(true); |
Метод isSelected() позволяет определить текущее состояние каждого флажка. Если значение равно false, значит он сброшен, а если true - установлен.
Щелкая на флажке, пользователь инициирует события. Как всегда, вы можете связать с данным компонентом объект-слушатель. В нашей программе для двух кнопок предусмотрен один и тот же слушатель действий:
ActionListener listener = ... |
|
bold.addActionListener(listener); |
|
italic.addActionListener(listener); |
В методе actionPerformed() обработчика запрашивается текущее состояние флажков bold и italic, а затем устанавливается шрифт, которым должен отображаться обычный текст: полужирный, курсив или полужирный курсив.
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)); |
|
} |
Ниже приведен полный исходник программы, демонстрирующей работу с флажками опции:
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; |
|
} |