当前位置: 首页 > 面试题库 >

在Blackberry中的AutoCompleteField上放置占位符文本

东方栋
2023-03-14
问题内容

我已经AutoCompleteField在Blackberry应用程序的屏幕之一中放了一个。我必须显示一个占位符文本,以提示用户输入信息。

这是下面的代码 AutoCompleteField

BasicFilteredList filterList = new BasicFilteredList();
        String[] address = { "T 115 Centro Galleria Shopping Centre, Cnr Old Collier and Walters Road Morley WA 1522", 
                "1423 SEAVIEW POINT POINT COOK VIC 2674",
                "Lot 1498 Yarraman Road Wyndham Vale VIC 3795", 
                "Lot 3506 Witchmount Close Hillside VIC 4055",
                "6 Paas Place Williamstown VIC 4233", 
                "Lot 99 14 James Close Sunbury VIC 4502", 
                "1 Charlotte Street Clayton South VIC 4779" };

        filterList.addDataSet(1, address, "address", BasicFilteredList.COMPARISON_IGNORE_CASE);
        AutoCompleteField autoCompleteField = new AutoCompleteField(filterList){
            public void onSelect(Object selection, int SELECT_TRACKWHEEL_CLICK) {
                 ListField _list = getListField();
                 if (_list.getSelectedIndex() > -1) {
                     if(selectedText!=null){
                         BasicFilteredListResult result = (BasicFilteredListResult) selection;
                         selectedText.setText(result._object.toString());
                     }
                 }
             }
        };
        add(autoCompleteField);

任何人,请建议我如何实施相同的方法。

谢谢。


问题答案:

您可以对普通EditField使用与此处所示类似的技术。基本上,您需要重写子类中的paint()方法AutoCompleteField。在中paint(),检查并查看该字段是否为空,如果是,则手动绘制所需的
占位符 文本。

不同的是,AutoCompleteFieldManagerBasicEditField它的内部。因此,要正确绘制文本,您需要找出父级ManagerAutoCompleteField)内编辑字段的x和y偏移量。

因此,将您的AutoCompleteField实例替换为此类的html" target="_blank">实例:

   private class CustomAutoCompleteField extends AutoCompleteField {
      private int yOffset = 0;
      private int xOffset = 0;

      public CustomAutoCompleteField(BasicFilteredList filteredList) {
         super(filteredList);
      }

      protected void paint(Graphics g) {
         super.paint(g);
         if (xOffset == 0) {
            // initialize text offsets once
            xOffset = getEditField().getContentLeft();
            yOffset = getEditField().getContentTop();
         }
         String text = getEditField().getText();
         if (text == null || text.length() == 0) {
            int oldColor = g.getColor();
            g.setColor(Color.GRAY);
            g.drawText("enter text", xOffset, yOffset);
            g.setColor(oldColor);
         }
      }

      public void onSelect(Object selection, int SELECT_TRACKWHEEL_CLICK) {
         ListField _list = getListField();
         if (_list.getSelectedIndex() > -1) {
            if(selectedText!=null){
               BasicFilteredListResult result = (BasicFilteredListResult) selection;
               selectedText.setText(result._object.toString());
            }
         }
      }
   }

我在OS
5.0上进行了测试,该实例没有设置任何边距或填充。对于不同的布局,可能需要调整用于计算x和y偏移量的逻辑。但是,上面的代码向您展示了基本思想。祝好运。

编辑:
以上代码带有警告,您的onSelect()方法显然依赖于未显示的代码。照原样,上面的代码将无法编译。我留在这里onSelect()只是为了表明我实际上是在替换您最初拥有的匿名类,并且在您的onSelect()方法上没有做任何不同的事情,因为它与占位符文本问题没有直接关系。



 类似资料:
  • 问题内容: 我正在尝试使用Swing创建GUI。我的问题是,我有一个文本字段,但我希望它有一个“占位符”(如html)。我在这里和那里读到,可以通过重写文本字段的paint()来完成此操作。 由于生成了我的代码,因此我发现我需要使用“自定义创建代码”来覆盖生成的代码。 这是我在“自定义创建代码”字段中输入的内容 这将产生以下输出 现在,我看到了textField,但其中没有任何内容,也许我需要在某

  • 如何在JavaFX中为< code>TextField设置占位符?我怎样才能不使用JavaScript来做这件事呢?

  • 如何在中添加占位符,类似于在中为设置的占位符?

  • 问题内容: 看来这是一个众所周知的问题,但是我在Google上找到的所有解决方案都不适用于我新下载的IE9。 启用and 标签上的属性的最喜欢的方式是哪种? 可选:我为此花了很多时间,而且还没有去寻找房产。您对此还有意见吗?显然,我可以检查PHP中的值,但是对于帮助用户使用此属性非常方便。 问题答案: HTML5占位符jQuery插件 -通过的Mathias Bynens上协作者HTML5样板和j

  • 我有一个使用占位符的Thymeleaf模板,其中占位符属性指定一个简短提示,描述输入字段的预期值或格式。 占位符在输入文本为空时工作。但是,如果需要编辑包含以前输入的数据的字段,则以前输入的文本将消失,并在输入收到焦点时替换为占位符文本。 有没有办法避免这种情况? 胸腺叶模板 以及生成的HTML

  • 类型 Glide允许用户指定三种不同类型的占位符,分别在三种不同场景使用: placeholder error fallback 占位符(Placeholder) 占位符是当请求正在执行时被展示的 Drawable 。当请求成功完成时,占位符会被请求到的资源替换。如果被请求的资源是从内存中加载出来的,那么占位符可能根本不会被显示。如果请求失败并且没有设置 error Drawable ,则占位符将