当鼠标点击该文本字段时,我需要使该程序从文本字段中清除文本.我已经尝试了一些事情,但是他们都没有为我工作.
以下是代码全部:
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
无论如何,注册MouseAdapter并覆盖mouseClicked为我工作,
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(); } }); } }
我希望这个例子让你从正确的方向开始!