Entering a time into textbox
I am doing a homework assignment. Although the assignment says to pass
parameters to a method, I wanted to extend the capabilities by entering
the time values. I modified some code I found and it "works", kind of,
but I do have a few questions. Perhaps you have some clarifications.
1) If I supply a default value to the text boxes, or leave as blank and
enter a value, it inserts the values, not overwrites the default. IOW,
if I enter 0 as a default, and go to that text box and enter 17, my
value is 170. I would expect a text box to overwrite the values else
press the Ins key to insert a value. How do I permit overwrite?
2) I can move between the fields using the Tab key. But if I enter a
value and hit the Enter key, I stay within the same field. How does one
move to the next field if one hits the Enter key?
3) Same holds true with the Exit button. If I use the mouse on the
Exit button, the window closes. But if I tab to the Exit button then
press Enter, nothing.
4) Is there a reliable way to enter a time (hour/minute/maybe ampm)
field into a listbox? I haven't been exposed to what I would consider
an input mask in Java.
5) I used System.exit(0) to "close" the window. Is that what one does
to close windows?
/**
MeterTime class
Inputs the hour and minutes
*/
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;
class MeterTime extends JFrame
{
private JTextField hourTF = new JTextField(2);
private JTextField minutesTF = new JTextField(2);
private JTextField apTF = new JTextField(1);
private int hour;
private int minutes;
public MeterTime()
{
// Create/initialize components
JButton exit = new JButton("Exit");
exit.addActionListener(new ExitBtnListener());
//Create hmContent panel, set layout
JPanel hmContent = new JPanel();
hmContent.setLayout(new FlowLayout());
//Add the components to the hmContent panel.
hmContent.add(new JLabel("Hour: "));
hmContent.add(hourTF); // Add input field
hmContent.add(new JLabel("Minutes: "));
hmContent.add(minutesTF); // Add input field
hmContent.add(new JLabel("AmPm: "));
hmContent.add(apTF); // Add input field
hmContent.add(exit); // Add button
//Set this window's attributes, and pack it.
setContentPane(hmContent);
pack(); // Layout components.
setTitle("Enter Time");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null); // Center window.
}
class ExitBtnListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
String myStr;
//get the hours
myStr = hourTF.getText();
try
{
hour = Integer.parseInt(myStr);
}
catch (NumberFormatException f)
{
hour = 0;
}
//get the minutes
myStr = minutesTF.getText();
try
{
minutes = Integer.parseInt(myStr);
}
catch (NumberFormatException f)
{
minutes = 0;
}
//get the ampm flag
myStr = apTF.getText();
myStr = myStr.toUpperCase();
System.out.println(myStr);
System.exit(0);
}
}
public static void main(String[] args)
{
MeterTime window = new MeterTime();
window.setVisible(true);
}
}