小程序按钮单击不起作用

时间:2012-03-15 13:53:47

标签: java button applet

当我点击applet上的按钮时,我得不到任何回复。 我之前得到了输出 - 然后我评论这部分做了其他一些事情。现在我再次回到它时,无论我做什么都不行。

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 个答案:

答案 0 :(得分:1)

按钮不能神奇地做任何事情,除非你给他们代码让他们做事情,这是通过向按钮添加一个ActionListener来完成的。我没有看到你在哪里这样做,这当然是你的问题的解决方案。在编写此代码之前,您是否已阅读过有关此内容的教程,因为它在教程和此论坛的先前主题中都有详细描述?另外,好奇为什么要写一个AWT程序而不使用更强大的Swing GUI库?

答案 1 :(得分:1)

首先,您的类需要实现ActionListener接口

public class main extends Applet implements ActionListener

这需要您创建已有的动作(事件)功能。

然后你需要告诉你的按钮使用该类作为他们的动作监听器

send.addActionListener(this);

这应该是点击注册。

答案 2 :(得分:1)

添加导入后,注释掉一些冗余行,添加一个applet标记,编译并在applet viewer中运行它,我得到的输出就像..

connectedconnectedsentconnectedsent

所以我认为你最终的问题是浏览器正在使用旧版本的类。在开发过程中,最好使用applet viewer(或Appleteer)启动applet,这两个缓存类都不是。

如果applet需要这些工具不支持的测试内容(例如与JS交互),请确保在加载applet(或JWS app。)时配置Java Console。有一些命令(参见起始输出中的列表)来刷新缓存。有时它也可以通过停止并重新启动浏览器来实现,但清除类缓存更加可靠。