【Problembeschreibung】
Textedit ist ein Texteditor mit Gamecanvas. Dieses Papier kombiniert Beispiele zur Bereitstellung von Implementierungsmethoden.
【Prinzip】
1 Verwenden Sie Grafiken und Gamecanvas, um Textfelder und Cursoren zu zeichnen.
2 Wenn ein Eingangsereignis erkannt wird, springen Sie zur erweiterten Schnittstelle -> Textbox. Füllen Sie die Eingabe über die Systemaufrufeingabemethode aus.
3 Geben Sie den von Textbox eingegebenen Wert an das textedit -Objekt zurück.
【Designmuster】
Dieser Vorgang ähnelt dem dekorativen Modus.
【Codeliste】
Textedit.javapackage com.token.view.comPonents; ; ) { / System.out.println("draw "); ); Breite+Rand, Höhe+Rand); y+1, width -1, Höhe -1); +ft.Stringwidth (Text)+Padding, Y+Padding, 1, ft.getheight (), Cursorblinkon); , int x, int y, int width, inthhohe, boolean cursorblinkon) {if (cursorblinkon) {ft = font.getfont (font.face_proportional, font.style_plain, font.size_medium); .SetColor (0x0,0x0, 0x0); ; Canvastext = "" private Befehl OKCommand; MaxSize, int -Einschränkungen) {Super (Titel, maxSize, Einschränkungen); "Cancel", command.cancel, 1); String) args [0]! = Null)? (String) Argumente [0]: ""; System.out.println (Object_Name); GetString (); | args_t [3]! = null ||. ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: : :::::::::::::::::::::::::::::::::::::::::::::::::: ]! = null) {args [0] = Object_Name; Controller.HandleEvent (uIcontroller.eventid.event_user_regist_edit_back, args); [4]! = "" || args_t [4]! ; args [4] = args_t [4]; || args_t [2]! = null || args_t [3]! = "" || args_t [3]! [2]; CommandListener {public void commandAction (Befehlsbefehl, Displayable) {if (command == Okcommand) {Closet extbox (true); .Token.view; *; privates STRINGE; y; Benutzername; Userregist (uIcontroll) {Super (false); Menü = that that); Neue SMSIt (this); [0]: ""; ) args [2]: ""; (String) args [4]: ""; ")) {cursorblinkon1 = false; cursorblinkon2 = true; cursorblinkon3 = false; derzeit ausgewählteIndex = 1;} else if (Editor.Equals (" Regist_passwd_re ") {cursorblinkon1 = false; cursorblinkon2 = cursorblinkton3 = true; } //System.out.println(Object_name); Grafik). 0: {Cursorblinkon2 = Falsch; CursorBlinkon2 = false; d_y, cu RSORBLINKON2); Ont .Style_bold, font.size_large); ); } textedit_name_x = 5; = StringDealMethod.Format (info, width-10, ft); (info_wrap2 [i], 5, (i+info_wrap1.length) * ft.getheight ()+textedit_name.height+margin+40, Graphics.top | Graphics.left); +info_wrap2 .Length) * ft.getheight ()+textedit_name.height+margin+40; ] = StringDealMethod.Format (info, width-10, ft); DrawString (info_wrap3 [i], 5, (i+info_wrap1.length+info_wrap2.Length) * ft.getheight ()+textedit_name.height+textedit_passwd.height+2 * Margin+40, GRA Phics.top | Graphics.left) ; passwd_re, textedit_passwd_re_x, textedit_passwd_re_y, cursorblinkon3); = System.currentTimillis (); ")) {cursorblinkon1 =! .Equals ("Regist_Paswd_re") {Cursorblinkon1 = False; (True) {CheckTimestAMP (); ; ! = "" && passwd! = "" && passwd_re! UserDataitem (1, userername +"," +passwd) .getBytes ()); ac tiveScreen", null, update}; controller .handleEvent(UIController.EventID.EVENT_NEXT_ACTIVE_TOKEN_SCREEN,args); } } break; } case KeyID.KEY_EDIT: case KEY_NUM0: case KEY_NUM1: c ase KEY_NUM2: case KEY_NUM3: case KEY_NUM4: case KEY_NUM5 : case key_num6: case key_num7: case key_num8: case key_num9: {//system.out.println(Editor); .Event_user_regist_edit, args); {redraw ();【analysieren】
1 Zeichnung von Textfeldern (textedit.java)
Sie müssen Gamecanvas- und Grafikobjekte übergeben, um die Zeichnung zu implementieren, wer die Strategie verwendet und diesen Parameter übergibt. Zusätzlich die obere linke Eckekoordinate (x, y) des Textfelds unter dem Bett und das variable Cursorblinkon, das das Cursorblitz steuert.
public void DrawTextBox (Gamecanvas -Leinwand, Grafikgrafik, String -Text, int y, boolean Cursorblinkon) {//System.out.println("draw "); . Padding; Breite, Höhe); , x+padding, y+padding, grafik.top | graphics.left); .Flushgraphics (x, y, width, Höhe);2 Zeichnen Sie den Cursor (textedit.java)
public void DrawCursor (Graphics Graphics, int x, int y, int width, int height, boolean cursorblinkon) {if (cursorblinkon) {ft = font.getfont (font.fac e_proportional, font.style_plain, font.size_medium); setfont (ft);3 Cursor Blitz implementieren
Die Implementierung des Cursorblitzes erfordert Threading.
UICONTROLL.javacase EventID.Event_NEXT_USER_REGIST_SCREEN: CASE EventID.Event_User_Regist_Edit_back: {reg.show); () {Long Currentime = System.CurrentTimillis (); .Equals ("Regist_Name") {Cursorblinkon1 =! } else if (editor.equals ("Regist_passwd_re") {Cursorblinkon1 = false; run "); while (true) {checkTimestamp (); redraw (); try {synchronized (this) {//system.out.println("3"); warte (50l);}} catch (Ausnahme) {{{{{{ e.
4 Rufen Sie die Popuptbox der erweiterten Schnittstelle Textbox Subklass an
Beim Aufrufen werden die Parameter des Aufrufobjektnamens, Bearbeitungsobjektnamens und Bearbeitungsfeldkästchen an das Objekt PopuptextBox übergeben (muss es haben. Der Zweck besteht darin, den Wert des Bearbeitungsfelds zu speichern. Ansonsten, wenn mehrere Anrufe zurückgeben, die Werte sind die Werte zurück. von verschiedenen Bearbeitungskästen werden aktualisiert, um leer zu werden.
UserRegist.java (Schlüsselpresse) case keyId.key_edit: case key_num0: case key_num1: case key_num2: case key_num3: case KEY_NUM4: case key_num5: case key_num6: case key_num7: case key_num8: case key_num9: {//System.out. (Editor); args);
5 Popuptbox -Parameterempfang
public void init (Object [] args) {Object_name = (String) args [0]! = null)? (String) args [0]: ""; (String) Argumente [1]: "";6 popuptextbox gibt die Werteingabe aus der Eingabemethode zurück
if (update) canvastext = this.getString ();
7 Popuptbox -Eingangswertverarbeitung
Verarbeiten Sie den Eingabwert gemäß dem aufgerufenen Objekt und dem Objekt bearbeiten und geben Sie ihn an das Kästchen übergeordnete Objektbearbeitungsbearbeitungen weiter.
if (object_name.equals ("RegistsCreen") {if (editor.equals ("Regist_name") {if (args_t [3]! = "" || args_t [3]! = null || args_t [4]! = "" || args_t [4]! = null) {args [0] = Object_name; ] = args_t [4]; ]! = null || args_t [4]! = "" || args_t [4]! [3] = this.canvastext; 2]! = "" || args_t [2]! = Null || args_t [3]! args [2] = args_t [2];
8 Anzeige der Eingangswerte
(1) Erstellen Sie ein neues Objekt
privat textedit textedit_name;
(2) Eingabeparameter akzeptieren
Object_Name = (String) args [0]! = null)? (String) args [0]: ""; "; userername = ((String) args [2]! : "";
(3) Cursorsteuerung, Positionierung zum Bearbeitungsobjekt und Steuern des Cursorblitzes des Bearbeitungsobjekts (Run -Methode)
private void redraw () {switch (derzeit ausgewählt) {case 0: {cursorblinkon2 = false; Break;
(4) Zeichnung des Bearbeitungsfelds
private void redraw () {... textedit_name.drawtextbox (diese, Grafik, textedit_name_x, textedit_name_y, cursorblinkon1); Textbox (this, Grafik, Passwd_re, textedit_passwd_re_x, textedit_passwd_re_y, cursorblinkon3);Der erreichte Effekt ist in Abbildung 1 dargestellt: