blackberry java-me

Blackberry-Cursor de campos personalizados de edición



java-me (4)

No recibo tu pregunta, pero

  1. puedes crear un campo de edición de una sola línea.

    BasicEditField editField = new BasicEditField (BasicEditField.NO_NEWLINE);

  2. puedes establecer la posición del cursor.

    editField.setCursorPosition (desplazamiento);

Estoy creando un cuadro de búsqueda para mi proyecto BlackBerry, pero parece que BlackBerry no tiene una API para crear una sola línea EditField. Creé un campo personalizado ampliando BasicEditField y reemplazando métodos como el diseño y la pintura. En el cuerpo de la función paint , dibujo un rectángulo con getPreferredWidth () y getPreferredHeight (). Pero el cursor aparece en la posición predeterminada superior izquierda en EditField. ¿Alguien puede decirme cómo puedo dibujar el cursor donde está mi texto? es decir, en el medio de EditField al llamar a drawText ().


Puede dibujar el cursor donde desee reescribir el método onFocus de editField.

protected void onFocus(int direction) { super.onFocus(direction); this.setCursorPosition(this.getTextLength()); invalidate(); }

Después de obtener el enfoque, el campo colocará el cursor al final del texto. EditField tiene setCursorPosition y también getTextLength.

Espero eso ayude.


si desea eliminar el cursor, puede anular drawFocus of Field.

protected void drawFocus(Graphics graphics, boolean on) {} // remove cursor


Gracias chicos, tengo una solución excelente de Blackberry Journal.

public class ScrollingSearchBox extends HorizontalFieldManager { private int managerWidth; private int managerHeight; public ScrollingSearchBox() { super(Manager.NO_HORIZONTAL_SCROLL); searchEdit = new BasicEditField(){ public int getPreferredHeight() { return ret; } public int getPreferredWidth() { return ret; } public void paint(Graphics g) { getManager().invalidate(); super.paint(g); } }; HorizontalFieldManager hfm = new HorizontalFieldManager(Manager.HORIZONTAL_SCROLL) { public void sublayout(int width, int height) { if (managerWidth == 0) { managerWidth = searchEdit.getPreferredWidth(); } if (managerHeight == 0) { managerHeight = searchEdit.getPreferredHeight(); } super.sublayout(managerWidth, managerHeight); setExtent(managerWidth,managerHeight); } public void paint(Graphics g) { super.paint(g); } }; searchEdit.setMaxSize(70); hfm.add(searchEdit); add(hfm); } public int getPreferredHeight() { int ret = 0; return ret; } protected void sublayout(int maxWidth, int maxHeight) { int currX = 0; int currY = 0; Field currField; currField = this.getField(0); switch (ScreenConfig.getInstance().getScreen()) { case ScreenConfig.SCREEN_320_240: currX = 5; currY = 3; break; case ScreenConfig.SCREEN_480_360: case ScreenConfig.SCREEN_480_320: currX = 5; currY = 1; break; } this.setPositionChild(currField, currX, currY); this.layoutChild(currField, currField.getPreferredWidth(), currField.getPreferredHeight()); setExtent(this.getPreferredWidth(), this.getPreferredHeight()); } protected void paint(Graphics graphics) { super.paint(graphics); graphics.drawRect(0, 0, this.getPreferredWidth(), this.getPreferredHeight()); } }

Estoy dando esto para que pueda ayudar a otros. Sigue compartiendo tus códigos. Gracias.