栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何使光标可以输入jtextfield,但给它文本的唯一方法是单击按钮?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何使光标可以输入jtextfield,但给它文本的唯一方法是单击按钮?

使用

documentFilter
,只需将其添加到您的
JTextField
喜欢的代码中即可:

 public class Test {    public void initComponents() {        //create frame        //add DoucmentFilter to JTextField        MydocumentFilter myFilter = new MydocumentFilter();        JTextField myArea = new JTextField();        ((Abstractdocument)myArea.getdocument()).setdocumentFilter(myFilter);         //add components set frame visible    } }class MydocumentFilter extends documentFilter {    @Override    public void replace(FilterBypass fb, int i, int i1, String string, AttributeSet as) throws BadLocationException {        super.replace(fb, i, i1, string, as);    }    @Override    public void remove(FilterBypass fb, int i, int i1) throws BadLocationException {        super.remove(fb, i, i1);    }    @Override    public void insertString(FilterBypass fb, int i, String string, AttributeSet as) throws BadLocationException {        super.insertString(fb, i, string, as);    }}

或者

您可能想要创建一个自定义JTextField,该自定义JTextField已经具有

documentFilter
(出于可重用性)类似:

public class MyCustomField extends JTextField {    public MyCustomField(int cols) {        super(cols);    }    protected document createDefaultModel() {        return ((document) new Mydocument());    }    static class Mydocument extends documentFilter {        @Override        public void insertString(FilterBypass fb, int i, String string, AttributeSet as) throws BadLocationException { super.insertString(fb, i, string, as);        }        @Override        public void remove(FilterBypass fb, int i, int i1) throws BadLocationException { super.remove(fb, i, i1);        }        @Override        public void replace(FilterBypass fb, int i, int i1, String string, AttributeSet as) throws BadLocationException { super.replace(fb, i, i1, string, as);        }    }}

从Hovercraft
进行 编辑, 我在考虑这些方面

import java.awt.event.ActionEvent;import javax.swing.*;import javax.swing.text.*;public class Test {   public void initComponents() {      JPanel panel = new JPanel();      final MydocumentFilter myFilter = new MydocumentFilter();      final JTextField myArea = new JTextField(20);      ((Abstractdocument) myArea.getdocument()).setdocumentFilter(myFilter);      panel.add(myArea);      panel.add(new JButton(new AbstractAction("Set Text") {         @Override         public void actionPerformed(ActionEvent arg0) { myFilter.setFiltering(false); myArea.setText("Fe Fi Fo Fum"); myFilter.setFiltering(true);         }      }));      JOptionPane.showMessageDialog(null, panel);      // add components set frame visible   }   public static void main(String[] args) {      new Test().initComponents();   }}class MydocumentFilter extends documentFilter {   private boolean filtering = true;   @Override   public void replace(FilterBypass fb, int i, int i1, String string,         AttributeSet as) throws BadLocationException {      if (!filtering) {         super.replace(fb, i, i1, string, as);      }   }   @Override   public void remove(FilterBypass fb, int i, int i1)         throws BadLocationException {      int offset = 0;      int length = fb.getdocument().getLength();      super.remove(fb, offset, length);   }   @Override   public void insertString(FilterBypass fb, int i, String string,         AttributeSet as) throws BadLocationException {      if (!filtering) {         super.insertString(fb, i, string, as);    }   }   public void setFiltering(boolean filtering) {      this.filtering = filtering;   }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/438917.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号