【问题标题】:How to replace text in the JTextField rather than deleting and entering? [duplicate]如何替换 JTextField 中的文本而不是删除和输入? [复制]
【发布时间】:2018-02-06 11:04:38
【问题描述】:

我正在做一个简单的公斤到磅的转换器,我有一个文本字段,上面写着“这里的公斤”,当用户输入输入时,它会被附加,但不会被覆盖。请帮忙。

 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);
           }

【问题讨论】:

标签: java swing jtextfield


【解决方案1】:

试试这个,看看它是否有效:

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");
    }
});

【讨论】:

  • 我可以看到使用工具提示,但不是这个;顺便说一句,MouseAdapter 不会那么冗长。
【解决方案2】:

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

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

【讨论】:

  • 不,这不应该是一个解决方案。因为,每次我想更新文本时,它都会删除旧文本。
  • 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); } } });
  • 更新你的答案。但 Placeholder 仍然是最好的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-26
  • 1970-01-01
相关资源
最近更新 更多