blackberry - 无法更改 Blackberry 中 TextField 的宽度

标签 blackberry blackberry-jde blackberry-eclipse-plugin

我是黑莓的新手,我只是在黑莓中尝试一些示例应用程序。我尝试创建一个登录页面。因此,当我尝试更改文本字段的宽度时,文本字段变得不可见。

以下是创建 TextField 的部分代码。

super(Field.FIELD_VCENTER);
......
t_username = new TextField()
{
    public void layout(int width, int height)
    {
        super.layout(500, 30);
        setExtent(500, 30);
    }
};
t_username.setMaxSize(10);
t_username.setBorder(BorderFactory.createSimpleBorder(new XYEdges(1,1,1,1),Border.STYLE_SOLID));

我尝试创建一个边框来检查它是否到达何处,但找不到它。 PFB,快照:

enter image description here

最佳答案

重写TextField#layout()方法

public void layout(int width, int height)
{
    super.layout(500, 30);
    setExtent(500, 30);
}

是设置文本字段宽度的一种方式。所以,我认为这里还有其他问题。

1) 可能,当您更改代码时,您错误地删除了对

的调用
add(t_username);

您没有向我们显示您实际添加该字段的位置,因此如果您没有在其他地方调用add(t_username),则该字段将不可见。字段必须添加到 ManagerScreen 中才能可见。

2) 也许您编写的其他一些代码(但未显示)正在尝试使用 Graphics 执行某些操作目的。例如,如果您要重写另一个字段中的 paint(Graphics) 方法,则可能会更改颜色(例如 graphics.setColor(Color.WHITE))并且不记得重置原始颜色。可能您的文本字段就在那里,但它的颜色与其背景相同。不过,如果发生这种情况,当您给该字段焦点时,您仍然可以看到文本字段光标。我根本无法从你的屏幕截图中看出。

更好的方法

通常(但并非总是),包含该字段的管理器/屏幕应负责确定其大小。我认为让大多数字段设置自己的宽度是很差的封装(尽管也有异常(exception))。我建议使用 setMargin()USE_ALL_WIDTH 标志为此文本字段设置合理的宽度:

public class TextFieldScreen extends MainScreen {

   private TextField t_username;

   public TextFieldScreen() {
      super(Field.FIELD_VCENTER);

      HorizontalFieldManager row = new HorizontalFieldManager();
      LabelField label = new LabelField("Username");
      label.setMargin(new XYEdges(2, 0, 2, 10));
      row.add(label);

      t_username = new TextField(TextField.USE_ALL_WIDTH);
      t_username.setMaxSize(10);
      t_username.setBorder(BorderFactory.createSimpleBorder(new XYEdges(1,1,1,1), Border.STYLE_SOLID));
      t_username.setMargin(new XYEdges(2, 10, 2, 10));
      row.add(t_username);

      add(row);
   }
}

与硬编码 500 的宽度相比,此解决方案的一个好处是,如果您的应用支持纵向/横向旋转,则上面的代码将正确地将字段宽度调整为屏幕宽度变化。如果您对字段宽度进行硬编码,则当设备旋转为纵向时,字段将太宽。

关于blackberry - 无法更改 Blackberry 中 TextField 的宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17435095/

相关文章:

blackberry-jde - 黑莓中的自定义对话框

java - 在 BlackBerry 中访问互联网执行 POST 的不同方式

facebook - BlackBerry 中 Facebook 中的 URL 问题

blackberry - 在开发黑莓应用程序之前要记住的事情

html - 使用 CSS 隐藏内容而不显示 :none or JavaScript

user-interface - BlackBerry-将项目添加到ListField

java - 如何在使用 BlackBerry BrowserSession 时抑制浏览器顶部栏

java - 黑莓中两个不同版本(4.6、4.7 和 5.0+ 以上)的一个构建

java - 安排黑莓应用程序

android - 是否有任何移动模拟器可以在网站上显示演示?