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水木清华站∶精华区