2012-06-20 35 views
0

嗯,我对Java.swing.ImageIcon类的实例的行为有一个简单的怀疑。在RMI中使用ImageIcon

现在,它是基于RMI客户端服务器操作......

假设有在服务器计算机存在所谓A.jpg一个JPG文件。 现在使用

  // At Server... 
      ImageIcon ic = new ImageIcon("C://server_image_folder//A.jpg"); 
      return ic; 

与功能

  // At Client.... 
      // same variable name used for simplicity.... 
      System.out.print(ic); 

我们将在这里,它在打印服务器计算机的图像文件的URL观察取回,然后用它在客户端..

这里,如: -C:/server_image_folder/A.jpg

所以我的问题是只是简单....

Will it cause any trouble since such URL don't exist in client computer ? 

这样的问题不能被观察到的情况类似本地主机因为两者共用同一个网址(我相信)。

但是,什么时候这两个程序在不同的计算机实施情况....?

+1

*“我实际上不能测试这种情况....”*开发基于RMI的代码时没有两台计算机或可以模拟两台计算机的环境,实际情况如何? –

+1

'new ImageIcon(“.../../A.jpg”);'BTW - '.'表示当前目录,'..'表示父目录,但'...'是什么意思?这对我来说是新的。 –

+0

它只是显示任何目录,你在...这就是全部...... 好友的问题很简单..... imageicon实例包含服务器计算机上的图像的URL ...但你带实例到客户端使用rmi ...该URL不存在(因为你把它带到不同的系统)....所以会产生任何问题..... ?? –

回答

1

这不会导致问题,但可能会导致一些混淆。您正在使用的构造函数将单个arg视为文件名和描述。 filename字段是暂时的,所以它不是序列化数据的一部分。但是,description字段不是瞬态的,它将成为序列化数据的一部分。由于toString方法将返回description字段,如果它非空,它可能会导致您认为该文件名也已保留,但它没有。

+0

所以总之你说.....它赢得'不会造成任何问题....并且我找到的打印字符串只是描述,并且与URL无关.....我将在实现客户端和服务器的场景中获得映像, ..... 就是这样.... ?? –

+0

这是正确的。 ImageIcon使用其writeObject和readObject方法来维护底层图像的宽度,高度和像素数据。 – kschneid

+0

呃...谢谢...伙计...我会继续......希望它是正确的....在我身边打个勾......也请投我的问题,如果你觉得它很好就够了.. –