当我点击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;
}
}
答案 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。有一些命令(参见起始输出中的列表)来刷新缓存。有时它也可以通过停止并重新启动浏览器来实现,但清除类缓存更加可靠。