java - 是否可以根据使用一个 MouseListener 单击哪一个文本字段来删除两个单独的文本字段中的文本?

标签 java swing jframe mouseevent

我有两个带有文本的 JTextField 和一个 MouseListener:

JTextField tf1 = new JTextField("Input your text here: ");
JTextField tf2 = new JTextField("Input your pattern here: ");
tf1.addMouseListener(mm);
tf2.addMouseListener(mm);

我想删除使用 MouseListener 单击的 TextField 中的文本:

MouseListener mm = new MouseAdapter(){
        public void mouseClicked(MouseEvent e){
            tf1.setText("");
            //tf2.setText("");
        }
    };

尽管如此,我只能设法删除两个或仅删除一个。我可以再添加一个 MouseListener,但我很好奇是否可以创建这样的 MouseListener,根据我单击的 TextField 删除文本。

最佳答案

试试这个,它将根据鼠标单击文本字段来删除。

import javax.swing.*;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.*;
public class JFrameTest{

public static void main(String[] args){

    JFrame frame= new JFrame(); 
    frame.setTitle("JFrame");

    JPanel mainPanel = new JPanel();
    mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));

    JPanel panel = new JPanel(new GridBagLayout());
    GridBagConstraints constr = new GridBagConstraints();

    constr.gridx=0;
    constr.gridy=0;

    JTextField txt1 = new JTextField(20);
    txt1.setText("abc");
    JTextField txt2= new JTextField(20);
    txt2.setText("efg"); 

    constr.gridx=1;
    panel.add(txt1, constr);
    constr.gridy=1;
    panel.add(txt2, constr);

    MouseListener mm = new MouseAdapter(){
        public void mouseClicked(MouseEvent e){
           //System.out.println(e);
           //System.out.println(e.getSource());

           //be sure to have the component in case that listener is added on more objs
           if(e.getSource() instanceof JTextField)
           {
               //set whatever you wanted on each TF individualy
               ((JTextField)e.getSource()).setText("");
           }
        }
    };
    //add the same listener on both but process on each as click
    txt1.addMouseListener(mm);
    txt2.addMouseListener(mm);

    mainPanel.add(panel);

    frame.add(mainPanel);
    frame.pack();
    frame.setSize(400, 400);
    frame.setLocationRelativeTo(null);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
}
}

关于java - 是否可以根据使用一个 MouseListener 单击哪一个文本字段来删除两个单独的文本字段中的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61854942/

相关文章:

java - 如何在 Java Swing 中抓取鼠标?

java - 如何从 Java 线程中调用 invokeLater 方法?

java - 使用JFrame时,add()方法从何而来?

java - JPanel内容不显示

java - 为什么我在 Tensorflow for Java 中收到 "slice index 0 of dimension 0 out of bounds"错误?

java - Android 在测试包中测试新服务

java - 将 C# 中的 "auto property"转换为 Java 替代代码

java - 具有多个实现的 Guice 和接口(interface)

java - JradioButtons 取消选中

java - 我如何实现新的 JFrame 功能