I need to make this program clear the text from the text field when the mouse clicks in that text field. I have tried a few things, but none of them have yet to work for me.
Here is the code in its entirety:
public class TimerClassPanel extends JFrame implements MouseListener{
public TimerClassPanel(){
setTitle("Timer Class");
setSize(WIDTH, HEIGHT);
timer = new Timer(DELAY, new TimerEventHandler());
pane = getContentPane();
pane.setLayout(null);
int r = (int)(9.0 * Math.random()) + 1;
String str2 = Integer.toString(r);
label = new JLabel(str2, SwingConstants.CENTER);
label.setSize(150,30);
label.setLocation(0,0);
textField = new JTextField();
textField.setSize(150,30);
textField.setLocation(150,0);
startB = new JButton("Start");
startbh = new StartButtonHandler();
startB.addActionListener(startbh);
startB.setSize(100,30);
startB.setLocation(0,30);
stopB = new JButton("Stop");
stopbh = new StopButtonHandler();
stopB.addActionListener(stopbh);
stopB.setSize(100,30);
stopB.setLocation(100,30);
exitB = new JButton("Exit");
ebHandler = new ExitButtonHandler();
exitB.addActionListener(ebHandler);
exitB.setSize(100,30);
exitB.setLocation(200,30);
pane.add(label);
pane.add(textField);
pane.add(startB);
pane.add(stopB);
pane.add(exitB);
timer = new Timer(DELAY, new TimerEventHandler());
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
private class TimerEventHandler implements ActionListener{
public void actionPerformed(ActionEvent e){
int r = (int)(9.0 * Math.random()) + 1;
String str = Integer.toString(r);
currentNum = "";
currentNum = str;
label.setText(str);
repaint();
}
}
public class StartButtonHandler implements ActionListener{
public void actionPerformed(ActionEvent e){
timer.start();
}
}
public class StopButtonHandler implements ActionListener{
public void actionPerformed(ActionEvent e){
timer.stop();
}
}
private class ExitButtonHandler implements ActionListener{
public void actionPerformed(ActionEvent e){
System.exit(0);
}
}
public static void main(String[] args){
TimerClassPanel timerPanel = new TimerClassPanel();
JOptionPane.showMessageDialog(null, "Type your guess (int between 1-9)" +
" in the field then press 'ENTER'");
}
@Override
public void mouseClicked(MouseEvent e) {
if( e.getX() > 150 && e.getX() < 300 && e.getY() > 0 && e.getY() < 30)
{
textField.setText("");
repaint();
}
}
@Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub
}
}
TL;DR
Anyway, registering a MouseAdapter
and overriding mouseClicked
worked for me,
import java.awt.FlowLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
public class ClickAndClearDemo {
private static void createAndShowGUI(){
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new FlowLayout(FlowLayout.CENTER, 20, 20));
final JTextField textField = new JTextField("Enter text here...");
textField.addMouseListener(new MouseAdapter(){
@Override
public void mouseClicked(MouseEvent e){
textField.setText("");
}
});
frame.add(textField);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable(){
@Override
public void run() {
createAndShowGUI();
}
});
}
}
I hope this example gets you started in the right direction!