是否可以根据使用一个 MouseListener 单击哪个文本字段来擦除两个单独的文本字段中的文本?
Is it possible to erase text in two separate TextFields depening on which one is clicked using one MouseListener?
我有两个带有文本的 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 擦除文本。
试试这个,它会根据鼠标点击 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);
}
}
我有两个带有文本的 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 擦除文本。
试试这个,它会根据鼠标点击 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);
}
}