Java 如何替换JTextField中的文本,而不是删除和输入?

Java 如何替换JTextField中的文本,而不是删除和输入?,java,swing,jtextfield,Java,Swing,Jtextfield,我正在制作一个简单的千克到磅的转换器,我有一个文本字段,上面写着“kgs here”,当用户输入时,它会被追加,但不会被覆盖。请帮忙 import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; public class UnitConvertKg { JFrame

我正在制作一个简单的千克到磅的转换器,我有一个文本字段,上面写着“kgs here”,当用户输入时,它会被追加,但不会被覆盖。请帮忙

 import java.awt.Color;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.*;
        public class UnitConvertKg {
        JFrame f;
        JPanel p;
        JButton b1;
        JTextField tf1,tf2;
        UnitConvertKg(){
            f=new JFrame("UnitConvertKg");
            p=new JPanel();
           tf1=new JTextField("Kg here");
    //this is predefined text and I want that this gets overwritten when t   //user types in kgs.

           tf2=new JTextField("             ");

           b1=new JButton("CONVERT");
           b1.addActionListener(new ActionListener(){
               public void actionPerformed(ActionEvent e){
                   double d = Double.parseDouble(tf1.getText())*2.204;
                   tf2.setText(String.valueOf(d));
               }
           });
           p.add(tf1);
           p.add(tf2);
           p.add(b1);
           p.setForeground(Color.blue);
           f.add(p);
           f.setSize(400,400);
           }

你的意思是像android中的提示和HTML中的占位符

tf1.addMouseListener(new MouseAdapter(){
@Override
    public void mouseClicked(MouseEvent e){
        tf1.setText("");
    }
});

试试这个,看看它是否起作用:

tf1.addMouseListener(new MouseListener() {
    @Override
    public void mouseClicked(MouseEvent e) {
    tf1.setText("");
    }

    @Override
    public void mousePressed(MouseEvent e) {

    }

    @Override
    public void mouseReleased(MouseEvent e) {

    }

    @Override
    public void mouseEntered(MouseEvent e) {

    }

    @Override
    public void mouseExited(MouseEvent e) {
    if(tf1.getText().equals("KG here") || tf1.getText().isEmpty())
        tf1.setText("KG here");
    }
});

您需要在字段中添加占位符,而不是文本。见和。希望它能帮助JTextField的占位者:-如果这不是一个重复的问题,请在你的问题中包含一个显示你选择的方法。不,这不应该是一个解决方案。因为,每次我想更新文本时,它都会删除旧文本.tf1.addMouseListener(new MouseAdapter(){@Override public void mouseClicked(MouseEvent e){String oldText=tf1.getText();if(oldText.toUpperCase().equals(“KG HERE”){tf1.setText(“”;}else{tf1.setText(oldText);});更新你的答案。但仍然占位符是最好的解决方案;顺便说一句,
MouseAdapter
就不会那么冗长了。