是否有可能删除两个单独的TextField中的文本,该文本字段取决于使用一个MouseListener单击哪个文本字段?

问题描述 投票:0回答:1

我有两个带有文本的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。

java jframe mouseevent
1个回答
0
投票

尝试此操作,它将基于鼠标单击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);
}
}
© www.soinside.com 2019 - 2024. All rights reserved.