BBS水木清华站∶精华区

发信人: hasty (闲情逸致), 信区: Java        
 
我写了一个简单的聊天室 
服务器端是应用程序,用的是这几个类: 
             NetworkServer,BufferedReader,BufferedWriter 
客户端是Applet,用的是 
             NetworkClient,BufferedReader,BufferedWriter 
支持中文应该是没有问题的 
但我在JBuilder中运行Applet,一切正常 
而在浏览器(IE 4.0)下运行中文无法显示 
而用Appletviewer运行则根本连接不上服务器端 
后来我用PrintWriter代替BufferedWriter 
结果浏览器下运行时是有些中文能显示,有些就只能是"?" 
而在Jbuilder下仍然工作的很好 
我百思不得其解,不知道您能不能帮我? 
 
另外,运行客户端需要提供UserName,我现在是在参数中 
直接指定了一个值 
如果让用户填写一个Form取得UserName,传递给Applet该怎么做呢? 
 
谢谢! 
 
 
发信人: CinC (Commander), 信区: Java        
 
 
 
∶ 另外,运行客户端需要提供UserName,我现在是在参数中 
∶ 直接指定了一个值 
∶ 如果让用户填写一个Form取得UserName,传递给Applet该怎么做呢? 
 
------------------------------------------------ 
我的做法: 
 
//InputFrame 类: 
 
import java.awt.*; 
import java.awt.event.*; 
 
public class InputFrame extends Frame implements ActionListener{ 
    Button okButton; 
    TextField tf; 
    String input=null; 
     
    public InputFrame (String str){ 
        setLayout(new GridLayout(3,1)); 
        setSize(200,100); 
        setLocation (200,200); 
 
        add (new Label (str)); 
        tf = new TextField(); 
         tf.addActionListener(this); 
        add (tf); 
        okButton = new Button("OK"); 
         okButton.addActionListener(this); 
        add (okButton); 
        setVisible(true); 
    } 
    // When Enter pressed 
    public void actionPerformed(ActionEvent e){ 
        String str =tf.getText(); 
        if (str.compareTo("")!=0) 
            input = tf.getText(); 
    } 
    // Keep Getting Input until input is not null 
    public String getInput(){ 
        while (input == null) 
            try{ 
                Thread.sleep(100); 
            }catch (Exception e){} 
        setVisible(false); 
        return input; 
    } 
} 
 
//测试类: 
import java.applet.Applet; 
import java.awt.*; 
 
public class MyApplet extends Applet{ 
    String userName; 
    public MyApplet(){ 
        InputDialog inputDialog = new InputDialog("Please input your name : "); 
        userName = inputDialog.getInput(); 
        start(); 
    } 
    public void paint(Graphics g){ 
        g.drawString(userName, 100, 100); 
    } 
} 
 
 
 
发信人: hasty (闲情逸致), 信区: Java 
 
【 在 CinC (Commander) 的大作中提到: 】 
∶ ------------------------------------------------ 
∶ 我的做法: 
 
谢谢!看到你的文章之前,根据soybean网友的提示(见3776) 
我刚刚用另外一种方法达到目的(利用Javascript): 
 
<script language="JavaScript"> 
<!-- 填写用户名进入聊天室 
function GotoChat(UserName) 
{ 
 document.write('<p align="center"><font color="#0000FF" size="5"><strong>东南 
大学办公BBS站-聊天室</strong></font></p>'); 
 document.write('<center><applet CODEBASE="chat/" CODE="ChatClient.class"  
NAME="Chat" WIDTH="400" HEIGHT="300" HSPACE="0" VSPACE="0" ALIGN="middle">'); 
 
 document.write('<param name="Host" value=202.119.11.179>'); 
 document.write('<param name="Port" value=7218">'); 
 document.write('<param name="UserName" value='+UserName+'></applet></center>' 
); 
  document.write('<p align="center"><a href="bbsmain.htm"><img  
src="images/sonic.gif"  alt="返回主选单" border="0" width="42" height="42">返 
回主选单</a></p>'); 
} 
// -- 结束JavaScript --> 
</script> 
 
 
<form method="POST" name="FormGetName"> 
  <div align="center"><center><p><font color="#FF00FF"><strong>您的聊天代号: 
</strong></font><input 
  type="text" name="Name" size="20"></p> 
  </center></div><div align="center"><center><p><input type="submit" value="进 
入" 
  name="B1" onclick="JavaScript:GotoChat(Name.value)">&nbsp;&nbsp; <input  
type="reset" 
  value="清除" name="B2"></p> 
  </center></div> 
</form> 
 
 
发信人: NetAnt (马上就要答辩啦), 信区: Java        
 
如果在navigator中,用LiveConnect很方便。在applet中 
写个: 
public getUsername(String strUsername){ 
  this.strUsername = strUsername; 
} 
 
在页面的javascript中直接调就行. 
 
【 在 hasty (闲情逸致) 的大作中提到: 】 
∶ 【 在 CinC (Commander) 的大作中提到: 】 
∶  
∶ 谢谢!看到你的文章之前,根据soybean网友的提示(见3776) 
∶ 我刚刚用另外一种方法达到目的(利用Javascript): 
∶  
∶ <script language="JavaScript"> 
∶ <!-- 填写用户名进入聊天室 
∶ function GotoChat(UserName) 
∶ { 
∶  document.write('<p align="center"><font color="#0000FF" size="5"><strong>东南 
∶ 大学办公BBS站-聊天室</strong></font></p>'); 
∶  document.write('<center><applet CODEBASE="chat/" CODE="ChatClient.class"  
∶ NAME="Chat" WIDTH="400" HEIGHT="300" HSPACE="0" VSPACE="0" ALIGN="middle">'); 
∶  document.write('<param name="Host" value=202.119.11.179>'); 
∶  document.write('<param name="Port" value=7218">'); 
∶  document.write('<param name="UserName" value='+UserName+'></applet></center>' 
∶ ); 
∶   document.write('<p align="center"><a href="bbsmain.htm"><img  
∶ src="images/sonic.gif"  alt="返回主选单" border="0" width="42" height="42">返 
∶ 回主选单</a></p>'); 
∶ } 
∶ // -- 结束JavaScript --> 
∶ </script> 
∶  
∶  
∶ <form method="POST" name="FormGetName"> 
∶   <div align="center"><center><p><font color="#FF00FF"><strong>您的聊天代号: 
∶ </strong></font><input 
∶   type="text" name="Name" size="20"></p> 
∶   </center></div><div align="center"><center><p><input type="submit" value="进 
∶ 入" 
∶   name="B1" onclick="JavaScript:GotoChat(Name.value)">&nbsp;&nbsp; <input  
∶ type="reset" 
∶   value="清除" name="B2"></p> 
∶   </center></div> 
∶ </form> 
 
 
 
 

BBS水木清华站∶精华区