gpt4 book ai didi

java - 如何在鼠标单击 JTextField 时清除 JTextField

转载 作者:搜寻专家 更新时间:2023-10-30 21:36:36 25 4
gpt4 key购买 nike

当鼠标在该文本字段中单击时,我需要让该程序清除文本字段中的文本。我尝试了一些方法,但还没有一个对我有用。

完整代码如下:

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

}
}

最佳答案

长话短说

无论如何,注册一个 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();
}
});
}
}

我希望这个例子能让你朝着正确的方向开始!

关于java - 如何在鼠标单击 JTextField 时清除 JTextField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10133366/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com