как написать код радиокнопки lwuit - PullRequest
0 голосов
/ 13 июля 2011

У меня есть моя форма. Добро пожаловать в эту форму. У меня есть две радио-кнопки - Подтверждение и регистрация и кнопка OK. Когда пользователь выбирает одну из радио-кнопок и нажимает OK, тогда форма будет отображаться, но я не могу этого сделать.Пожалуйста, помогите.

это мой код класса Statemachine:

package userclasses;

import generated.StateMachineBase;
import com.sun.lwuit.*;
import com.sun.lwuit.events.*;
import com.sun.lwuit.RadioButton;
import com.sun.lwuit.Form;
import com.sun.lwuit.util.Resources;

public class StateMachine extends StateMachineBase implements ActionListener {

    Resources resources;
    RadioButton Verification = new RadioButton("Verification");
    RadioButton Enrollment = new RadioButton("Enrollment");
    StateMachineBase cl = new StateMachineBase() { };

    com.sun.lwuit.ButtonGroup bg=new ButtonGroup();

    Form fo, f;

    public StateMachine(String resFile) {
        super(resFile);
        // do not modify, write code in initVars and initialize class members there,
        // the constructor might be invoked too late due to race conditions that might occur
    }

    /**
     * this method should be used to initialize variables instead of
     * the constructor/class scope to avoid race conditions
     */
    StateMachine()
    {
        try {
            resources = Resources.open("/NEW AADHAR.res");
        }
        catch(java.io.IOException err) {
            err.printStackTrace();
        }
        cl.setHomeForm("Welcome");
        fo = (Form)cl.startApp(resources,null,true);
        f = cl.findWelcome(fo);
        //fo.addCommandListener(this);

        Verification = cl.findRadioButton1(f);
        Enrollment = cl.findRadioButton(f);
        f.addComponent(Verification);
        f.addComponent(Enrollment);
        //fo.addComponent(bg,null);
        bg.add(Enrollment);
        bg.add(Verification);
        Verification.addActionListener(this);
        Enrollment.addActionListener(this);
    }

    protected  void initVars() { }

    protected void onWelcome_OKAction(Component c, ActionEvent event) { }

    public void actionPerformed(ActionEvent ae) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    protected boolean onWelcomeEXIT() {
        // If the resource file changes the names of components this call will break   notifying you that you should fix the code
        boolean val = super.onWelcomeEXIT();
        return val;
    }

    protected void onWelcome_ButtonAction(Component c, ActionEvent event) {
        // If the resource file changes the names of components this call will break notifying you that you should fix the code  

        super.onWelcome_RadioButton1Action(c, event);
        super.onWelcome_RadioButtonAction(c, event);

        if(Verification.hasFocus()) {   
            showForm("Login",null);
        }
        else if(Enrollment.hasFocus()) {
            showForm("Authentication",null);
        }
        else {
            Dialog.show("INFORMATION","Please select option","OK","CANCEL");
        }
    }
|

Ответы [ 2 ]

3 голосов
/ 14 июля 2011

Когда вы генерируете проект netbeans из GUI Builder, папка src теперь будет содержать файл res, с которым вам нужно работать. Всякий раз, когда вы изменяете код GUI, StateMachineBase будет регенерирован, так что вы можете просто переименовать компоненты в GUI Builder (вы можете сделать это, нажав на узел дерева и нажав F2 или выбрав атрибут name в таблице свойств). Таблица свойств позволяет назначить событие для каждого компонента, который его поддерживает (например, события действия переключателя), которое сгенерирует соответствующий метод обратного вызова в классе StateMachine (напишите свой код только в классе StateMachine).

Радиокнопки можно связать с одной группой, присвоив им одинаковое имя группы.

0 голосов
/ 20 июля 2011

Самый простой способ сделать это - использовать Resource Editor. Просто запустите его из каталога LWUIT / util.

Чтобы создать проект с помощью этого инструмента, выполните каждый шаг из этого видео: http://www.youtube.com/watch?v=HOfb8qiySd8. Обязательно смотрите его до конца.

Будет создано 4 проекта Netbeans (ProjectName, ProjectName_Desktop, ProjectName_MIDP, ProjectName_RIM). Исправьте зависимости (наиболее важные для ProjectName и _MIDP one), и вы можете начать кодирование.

Файл StateMachineBase.java будет находиться в «сгенерированном» пакете, что означает, что он будет обновляться каждый раз, когда вы что-то изменяете в редакторе ресурсов.

Реализуйте все в классе StateMachine (пакет 'userclasses'), но не создавайте там новые методы, используйте Редактор ресурсов, чтобы создать их для вас: Редактор ресурсов -> GUI Builder (вкладка слева) -> Выбрать компонент - > События (вкладка справа).

Теперь, если вы хотите что-то сделать, например, хотите изменить значение TextField, вы напишите что-то вроде этого:

protected boolean onUstawieniaKontoZapisz() {
// If the resource file changes the names of components this call will break notifying you that you should fix the code //this comment was generated
boolean val = super.onUstawieniaKontoZapisz(); //generated

Form current = Display.getInstance().getCurrent();

TextField login = findUstawieniaKontoLoginTextField(current); //TextField name in Editor is: 'UstawieniaKontoLoginTextField' - a bit long I know, but it's unique
TextField password = findUstawieniaKontoHasloTextField(current); //same here, 'UstawieniaKontoHasloTextField' is second's TextField name

Configuration.setEmail(login.getText()); //Configuration class is used to store preferences
Configuration.setPassword(password.getText());

return val; //generated
}

Вы можете найти все методы 'find *' внутри класса StateMachineBase. Для каждого компонента, добавленного с помощью редактора ресурсов (вкладка GUI Builder), есть один.

Чтобы сгруппировать переключатели в группы, также используйте редактор ресурсов, выберите каждый переключатель и на вкладке Свойства найдите свойство «Группа». Установите для него одно и то же слово на всех переключателях, которые вы хотите иметь в одной группе.

...