TCP/IP发送图片,swing.JPanel显示并更新图片(一、图片显示和更新)
来源:互联网 发布:图集软件 编辑:程序博客网 时间:2024/05/16 17:47
作者要做一个演示图片传输的小工具,需求如下:
1. 建立TCP/IP连接
2. 在服务器界面上显示正在传输给客户端的图片
3. 客户端显示已经接受完成的图片
4. 服务器将指定目录下的,符合命名规则的所有图片都传输到客户端
本篇先介绍在JPanel上图片的显示和更新
图片显示和更新:
1)调用类的方法
//要显示的图片放在工程的根目录的Sample Picture文件夹下,即与src是同级的目录。图片用数字命名
int countPhoto = 2;
File file = null;
file = new File("Sample Pictures/" + countPhoto + ".jpg");
//显示图片更新
Image image=ImageIO.read(file);
imagePanel.loadPhoto(image);
imagePanel.repaint();
在imagePanel中的代码如下:
/*
* 用于显示图片的JPanel, 放在frame中
*/
class ImagePanel extends JPanel {
private Image image;
//初始化时,加载的图片1.jpg
public ImagePanel()
{
try
{
image=ImageIO.read(new File("Sample Pictures/1.jpg"));
}catch(IOException e)
{
e.getStackTrace();
}
}
//实现图片的更新
public void loadPhoto(Image img)
{
image=img;
repaint();
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
if(image==null) return;
int imageWidth=image.getWidth(this);
int imageHeight=image.getHeight(this);
//将图片画在左上角
g.drawImage(image, 0, 0, null);
}
}
网搜加载图片的原理如下:
ImagePanel可以从JPanel继承。ImagePanel相对与JPanel,多了一个图像显示的功能,所以里面一定要有获取图片的方法,还必须重载paintComponent方法。
关于paintComponent这我想多说一点。可视化组件要完成显示的工作一般都要调用paint方法,而paint方法又把绘图任务交给了三个方法:paintComponent,paintBorder,和paintChildren。我们只需把需要个性定制的实现代码放在paintComponent方法里,在添加你的代码之前记得一定要调用super.paintComponent。在写自己的实现方法前一定要记住给自己留一条退路。什么退路?比如说我们前面提到的关闭文件方法,要实现一定的清理工作,等价于不在原组件里画图。这里我们可以这样实现:
一般情况下,我们不能直接调用paint方法,当需要更新显示内容时直接调用repaint。repaint先完成一定的清理工作然后会调用paint,paint又调用paintComponent,就可以显示出你画的东西了。- TCP/IP发送图片,swing.JPanel显示并更新图片(一、图片显示和更新)
- TCP/IP发送图片,swing.JPanel显示并更新图片(二、图片发送和发送/接受的同步)
- C# 利用TCP/IP协议发送图片文件,并显示
- 浏览器更新HTTP服务器图片并显示
- Swing 将显示好的JPanel保存为一张图片
- swing jpanel图片平铺
- swing获取网络图片,并压缩显示
- swing显示图片
- Swing中显示图片
- swing显示gif图片
- Swing图片显示
- swing显示图片
- 在ExtJs的容器中显示图片,并动态更新
- C#读取数据库图片显示、缩小、更新
- Android-图片存入系统相册更新显示
- Swing显示图片 重写Jcomponent
- 图片上传并显示
- java swing 更新JPanel
- 优秀开源代码解读之JS与iOS Native Code互调的优雅实现方案
- Linux常用命令
- Android透明状态栏和沉浸式状态栏实现
- C++_子集生成算法汇总
- STL之inner_product
- TCP/IP发送图片,swing.JPanel显示并更新图片(一、图片显示和更新)
- return在try-catch-finally语句中的使用
- 详细解释数据挖掘中的 10 大算法(上)
- js变量、作用域及内存详解
- JSDoc命令行参数
- Android SDK无法下载,ADT官网无法打开解决方法
- 双目立体视觉简单介绍
- 详细解释数据挖掘中的 10 大算法(下)
- 自己实现strtok