=====
CS 235 - Week 11 Lecture - 2021-11-01
=====
=====
TODAY WE WILL
=====
* announcements
* using lambdas to specify listeners more concisely
* maybe more on Threads and Swing?
* intro a few more GUI components and listeners
* prep for next class
* Reading? I think the following:
* Chapter 10, Section 10.4.3 - specifying listeners more concisely,
pp. 604-605
* Chapter 11 - some additional components and associated listeners
* ArrayList reminder: Section 5.3 - Generic Array Lists - pp. 248-256
* Should start start working on Homework 7; due Friday, 11:59 pm
* reminder: if you still need to, arrange to meet with your advisor
this week for Spring 2022 advising!
=====
Specifying listeners more concisely - Section 10.4.3, pp. 604-605
=====
* remember how, the last few weeks,
we've been able to specify a Runnable instance
with the help of a lambda expression
(instead of creating a class implementing the Runnable interface
to do so)
because Runnable is a so-called functional interface;
Looks like ActionListener is ALSO a functional interface!
something like this is also OK for creating an
ActionListener instance:
ActionListener anActionListener =
event ->
{
desired_action;
desired_action;
};
see a version of this in Button2Test.java
=====
another useful GUI component:
=====
* Swing version of a checkbox: JCheckBox
* checkboxes: you want to visualize if some choice is selected
or not, and have a set where none might be, some might be,
all might be, checked;
* the Java JCheckBox can actually support more than
one listener! ActionListener (to make the JCheckBox sensitive
to ActionEvents)
ItemListener (to make the JCheckBox sensitive to
to ItemEvents)
* some useful JCheckBox methods:
* one of its constructors expects the desired text
that "accompanies" the checkbox
* method isSelected expects nothing and returns whether
the calling checkbox is currently checked, or selected
* method setSelected expected a boolean and returns nothing
and MAKES the calling checkbox be checked, or selected
* a difference between ItemListener and ActionListener for
JCheckBox objects:
* a JCheckBox ItemListener can be fired by the setSelected
method --
an ActionListener is fired when the calling checkbox's
state is altered/changed
(this can matter at the beginning of setup...)
=====
JRadioButton class
=====
* idea you SHOULD use with these, to meet user
expectations: logically grouped such that selecting
ONE radio button in the logical group causes any
other that is currently selected to be UN-selected
You construct a ButtonGroup object for each logical
group of radio buttons,
then you add the desired JRadioButton objects
to that ButtonGroup
(BUT!!!!! adding a JRadioButton to a ButtonGroup is separate
from adding it to a JPanel or other container so you SEEEEE
it!)
* push of radio button can be an ActionEvent quite nicely;
* yes, they have an isSelected method so you can ask if
a particular radio is currently selected
* weird quirk of ButtonGroup:
* has a getSelection, yay!
* it returns a not-very-useful ButtonModel reference, booo!
* IF you explicitly set each JRadioButton to have
an action command using setActionCommand, though,
THEN the ButtonGroup's getSelection().getActionCommand()
WILL give the label for the selected JRadioButton, at least!