Instructions: Answer the following questions one at a time. After answering each question, check your answer (by clicking on the check-mark icon if it is available) before proceeding to the next question.
Getting Ready: Before going any further, you should:
downloads
directory/folder). In most browsers/OSs, the
easiest way to do this is by right-clicking/control-clicking on
each of the links above and then selecting CashMachine
. What happened?
CashMachine
.
PINPadWindow
class.
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
CashMachine
and again click on the icon that
closes the window (which will vary with the
operating system you are using). What happened now?
Container
in a table/matrix
that contains four rows and three columns. What layout manager would
you use?
setupLayout()
method in the
NumberPad
class. Your implementation must contain
12 JButton
objects and be consistent with the
following wireframe.
setupLayout()
method in the
PINPadWindow
class so that it now constructs
a NumberPad
and adds it to the content pane.
What code is in the setupLayout()
method now?
CashMachine
. How big is the window and how
big are the buttons?
CashMachine
.
Font
object, and call the setFont()
method on each JButton
(passing it the Font
you created).
PINPadWindow
class.
pack();
Execute CashMachine
. How big is the window now?
PINPadWindow
class.
setResizable(false);
Execute CashMachine
. Can you re-size the window?
Display
class that specializes the
JLabel
class. The default constructor must call the
single-parameter constuctor in the parent class passing it
" "
and then call the setBorder()
method passing it an etched border
(see BorderFactory
for help in creating
a border).
What code is in the class?
setupLayout()
method in the
PINPadWindow
class so that it adds
a Display
above the NumberPad
in a fashion that is consistent with the
following wireframe.
What code is in this method now? (Note: Remember to
construct an appropriate layout manager and pass it to
setLayout()
.)
Display
class so that it now realizes the
ActionListener
interface.
Specifically, it should respond to ActionEvent
objects
that have an action command of "C"
by clearing its
contents (i.e., by setting its text to " "
)
and any other ActionEvent
objects by appending
the action command to its current contents.
What code is in this class now?
NumberPad
class
so that it is now passed
an ActionListener
object
that it stores in a private attribute named listener
,
before calling
setupLayout()
. (Obviously, you;ll also need to add
the attribute). What code is in the constructor now?
addButton()
method in the NumberPad
class so that it makes listener
an ActionListener
on the button it is adding.
What code did you add?
setupLayout()
method in the
PINPadWindow
class so that the Display
is now an ActionListener
on the NumberPad
.
What code did you change?
CashMachine
. What happens when you click
on the various buttons?
Display
class so that the text is
aligned to the right. What change did you make?
Display
so that:
Display
is empty it displays the
text "Enter your PIN"
.Display
is not empty it shows
(an appropriate number of) asterisks rather than the PIN.
Display
class now?
Display
so that the text is gray when
"Enter your PIN" is displayed and red when the asterisks are displayed.
What code did you change?
KeyListener
interface. The other is to use key bindings. This section of the lab
will help you understand how to use the latter.
Action
interface.
What is the purpose of this interface?
ActionListener
that will be associated with a
particular key (really the String
on that key) and
will programmatically "click" the
corresponding JButton
(e.g., that will cause
the 1 key to click the 1 button. Create
a class named ClickAction
that
extends AbstractAction
with a constructor that is
passed a JButton
and stores it in an approrpiate
attribute. What code did you add?
actionPerformed()
method that has the
button grab the focus and click itself (staying pressed for
50 milliseconds). What code did you add?
ClickAction
to the NumberPad
object's ActionMap
for each JButton
. To do this you need to modify the
NumebrPad
object's addButton()
method.
Specifically, you need to get the
NumberPad
object's ActionMap
, construct
a ClickAction
for the JButton
and put it
in the map. What code did you add to the addButton()
method?
InputMap
for the NumberPad
that maps each key stroke of interest to
the text on the corresponding button (e.g., maps
KeyStroke.getKeyStroke(KeyEvent.VK_0, 0)
to "0"
). What code did you add to the constructor
in the NumberPad
class?
Copyright 2023