Нажатие кнопки апплета не работает - PullRequest
0 голосов
/ 15 марта 2012

Когда я нажимаю кнопки на апплете, я не получаю ответа. У меня был выход раньше - потом я прокомментировал, что эта часть сделала кое-что еще. Теперь снова, когда я вернулся к нему, он не работает, независимо от того, что я делаю.

public class main extends Applet {

    TextArea display = new TextArea();
    TextField input = new TextField();
    Button send;
    Button connect;

    String message;
    Socket cli = null;
    Socket client = null;
    time updatetime;
    Start_server start_server=null;

    public void init() {

        send = new Button("send");
        connect = new Button("Start");

        Panel keys = new Panel();
        keys.setLayout(new GridLayout(1, 1));
        keys.add(connect);

        Panel south = new Panel();
        south.setLayout(new BorderLayout());
        south.add("West", keys);
        south.add("Center", input);
        south.add("East", send);

        Label title = new Label("Lamport", Label.CENTER);
        title.setFont(new Font("Helvetica", Font.BOLD, 14));

        setLayout(new BorderLayout());
        add("North", title);
        add("Center", display);
        add("South", south);

    }

    public boolean action(Event e, Object o) {
        if (e.target == connect) {
            display.append("connected");
        }
        else if(e.target == send) {
            display.append("sent");
        }
        return true;
    }
}

Ответы [ 3 ]

1 голос
/ 15 марта 2012

Сначала вашему классу необходимо реализовать интерфейс ActionListener

public class main extends Applet implements ActionListener

Для этого необходимо создать уже имеющуюся функцию действия (события).

Затем вы должны указать своим кнопкам использовать класс в качестве прослушивателя действий

send.addActionListener(this);

Это должно сделать регистр кликов.

1 голос
/ 15 марта 2012

После того, как я добавил импорт, закомментировал пару лишних строк, добавил тег апплета, скомпилировал его и запустил в средстве просмотра апплета, я получил вывод как ..

connectedconnectedsentconnectedsent

Так что, я думаю, проблема в том, что ваш браузер использует старые версии классов. Во время разработки было бы лучше запустить апплет с помощью средства просмотра апплета (или Appleteer ), ни одного из классов кэша.

Если апплету требуются вещи для тестирования, которые не поддерживаются этими инструментами (например, взаимодействие с JS), убедитесь, что у вас настроена консоль Java для открытия при загрузке апплета (или приложения JWS). Существуют команды (см. Список в начальном выводе) для очистки кэша. Иногда этого также можно добиться, остановив и перезапустив браузер, но очистка кэша классов более надежна.

1 голос
/ 15 марта 2012

Кнопки волшебным образом ничего не могут сделать, если вы не дадите им код, который позволяет им что-то делать, и это делается путем добавления ActionListener к кнопке.Я нигде не вижу, где вы это делаете, и это, конечно, решение вашей проблемы.Читали ли вы учебники по этому вопросу перед написанием этого кода, поскольку все это хорошо описано в учебниках и в предыдущих темах на этом форуме?Кроме того, просто любопытно, зачем писать программу на AWT, а не использовать более мощную библиотеку Swing GUI?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...