package ChartRoom;
import sun.net.www.content.image.png;
import javax.management.monitor.Monitor;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreePath;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.Socket;
import java.net.URLDecoder;
import java.util.HashMap;
import static javafx.scene.input.KeyCode.J;
import static sun.rmi.registry.RegistryImpl.getID;
/**
* Created by Scruel on 2016/6/14.
* Personal blog -- http://wysum.com
*/
public class ChartClient extends JFrame
{
private String username;
private int fIndex = 0;
private Socket client;
private ObjectOutputStream writer;
private ObjectInputStream reader;
private Object[] onlineUser;
private HashMap<String, ChartWindow> chartingMap = new HashMap<>();
private JPanel jp = new JPanel(null);
private JScrollPane jScrollPane = new JScrollPane();
private WyFatherPanel onlineFP = new WyFatherPanel("当前在线", fIndex, this);
private HashMap<Integer, WyFatherPanel> fatherMap = new HashMap<>();
private File localPath = new File(URLDecoder.decode(this.getClass().getResource("").getFile() + "img"));
// public static void main(String[] args) throws Exception
// {
// new ChartClient("无言独影", new Socket(), new ObjectOutputStream(new FileOutputStream(new File("K:\\Program\\编程\\javaWorkSpace\\current\\bin\\socket\\data.pro"))), new ObjectInputStream(new FileInputStream(new File("K:\\Program\\编程\\javaWorkSpace\\current\\bin\\socket\\data.pro"))));
// }
public void openChartWindow(String target)
{
//280,165
if (!target.equals(username))
{
if (chartingMap.containsKey(target))
{
chartingMap.get(target).setVisible(true);
} else
{
ChartWindow cw = new ChartWindow(username, target, writer);
chartingMap.put(target, cw);
}
}
}
ChartClient(String username, Socket socket, ObjectOutputStream writer, ObjectInputStream reader)
{
super(username + "的聊天界面");
this.reader = reader;
this.writer = writer;
this.client = socket;
this.username = username;
System.out.println(username);
fatherMap.put(fIndex++, onlineFP);
WyFatherPanel fatherPanel2 = new WyFatherPanel("我的好友", fIndex, this);
fatherMap.put(fIndex++, fatherPanel2);
//添加分组的时候可以用:1.创建FP 2.置入map 3.更新jpPsize 4.更新UI
int countHeigh = 0;
for (int i : fatherMap.keySet())
{
jp.add(fatherMap.get(i));
countHeigh += fatherMap.get(i).getHeight();
if (i == 0)
continue;
fatherMap.get(i).setLocation(0, fatherMap.get(i - 1).getY() + fatherMap.get(i - 1).getHeight());
}
jp.setPreferredSize(new Dimension(230, countHeigh + 50));
jp.setBackground(new Color(231, 239, 248));
jScrollPane.setViewportView(jp);
upDateUI();
jScrollPane.addMouseWheelListener(new MouseWheelListener()
{
@Override
public void mouseWheelMoved(MouseWheelEvent e)
{
JScrollBar sbr = jScrollPane.getVerticalScrollBar();
sbr.setValue(sbr.getValue() + e.getWheelRotation() * 40);
}
});
ImageIcon backgroundImage = new ImageIcon(localPath + "/skin/skin.png");
JLabel backgroundJL = new JLabel(backgroundImage);
backgroundJL.setBounds(0, 0, 280, 165);
jScrollPane.setBounds(0, 165, 280, 600);
//最小化+关闭按钮,代码。。。繁多。。。
ImageIcon closeImage = new ImageIcon(localPath + "/btn_close_normal.png");
ImageIcon closeImage_hover = new ImageIcon(localPath + "/btn_close_highlight.png");
ImageIcon closeImage_down = new ImageIcon(localPath + "/btn_close_down.png");
JButton closeBT = new JButton(closeImage);
closeBT.setBounds(250, 0, 30, 30);
// closeBT.setOpaque(false);//设置背景透明,不知道为什么不能用。。
closeBT.setContentAreaFilled(false);//设置背景色透明
closeBT.setBorderPainted(false); //设置外边框透明
closeBT.setFocusPainted(false);//设置内边框透明
closeBT.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
});
closeBT.addMouseListener(new MouseAdapter()
{
@Override
public void mouseEntered(MouseEvent arg0)
{
closeBT.setIcon(closeImage_hover);
}
@Override
public void mouseExited(MouseEvent arg0)
{
closeBT.setIcon(closeImage);
}
@Override
public void mousePressed(MouseEvent e)
{
closeBT.setIcon(closeImage_down);
}
});
ImageIcon miniImage = new ImageIcon(localPath + "/btn_mini_normal.png");
ImageIcon miniImage_hover = new ImageIcon(localPath + "/btn_mini_highlight.png");
ImageIcon miniImage_down = new ImageIcon(localPath + "/btn_mini_down.png");
JButton miniBT = new JButton(miniImage);
miniBT.setBounds(220, 0, 30, 30);
miniBT.setContentAreaFilled(false);//设置背景色透明
miniBT.setBorderPainted(false); //设置外边框透明
miniBT.setFocusPainted(false);//设置内边框透明
miniBT.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
setExtendedState(JFrame.ICONIFIED);//ICONIFIED代表最小化
}
});
miniBT.addMouseListener(new MouseAdapter()
{
@Override
public void mouseEntered(MouseEvent arg0)
{
miniBT.setIcon(miniImage_hover);
}
@Override
public void mouseExited(MouseEvent arg0)
{
miniBT.setIcon(miniImage);
}
@Override
public void mousePressed(MouseEvent e)
{
miniBT.setIcon(miniImage_down);
}
});
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
java 高仿QQ8.x版本好友列表+服务器实现 高仿了QQ8.x版本的好友界面,使用javajdk1.8开发,正常1.6以上都可以直接运行,1.5版本应该改下泛型部分就可以正常运行。主要是好友列表的界面效果,其它的部分没有细做,有需要的可以下载 作者:Scruel 转载请注明出处
资源推荐
资源详情
资源评论
收起资源包目录
【Java】高仿/类似QQ8.x版聊天室好友列表+服务器实现源码 绝对相似和逼真 (2000个子文件)
141_16.bmp 622B
141_16.bmp 622B
143_16.bmp 571B
143_16.bmp 571B
146_16.bmp 536B
146_16.bmp 536B
145_16.bmp 524B
145_16.bmp 524B
140_16.bmp 516B
140_16.bmp 516B
181_16.bmp 506B
181_16.bmp 506B
102_16.bmp 495B
102_16.bmp 495B
233_16.bmp 493B
233_16.bmp 493B
195_16.bmp 489B
195_16.bmp 489B
103_16.bmp 484B
103_16.bmp 484B
121_16.bmp 481B
121_16.bmp 481B
119_16.bmp 474B
119_16.bmp 474B
142_16.bmp 471B
142_16.bmp 471B
173_16.bmp 466B
173_16.bmp 466B
239_16.bmp 462B
144_16.bmp 462B
239_16.bmp 462B
144_16.bmp 462B
104_16.bmp 461B
104_16.bmp 461B
235_16.bmp 460B
235_16.bmp 460B
234_16.bmp 459B
234_16.bmp 459B
98_16.bmp 458B
98_16.bmp 458B
230_16.bmp 454B
230_16.bmp 454B
100_16.bmp 452B
100_16.bmp 452B
248_16.bmp 451B
248_16.bmp 451B
3_16.bmp 450B
126_16.bmp 450B
212_16.bmp 450B
3_16.bmp 450B
12_16.bmp 450B
126_16.bmp 450B
212_16.bmp 450B
12_16.bmp 450B
101_16.bmp 448B
238_16.bmp 448B
101_16.bmp 448B
238_16.bmp 448B
153_16.bmp 447B
153_16.bmp 447B
262_16.bmp 446B
262_16.bmp 446B
184_16.bmp 441B
184_16.bmp 441B
242_16.bmp 439B
242_16.bmp 439B
6_16.bmp 438B
6_16.bmp 438B
236_16.bmp 431B
236_16.bmp 431B
127_16.bmp 430B
122_16.bmp 430B
127_16.bmp 430B
122_16.bmp 430B
157_16.bmp 428B
157_16.bmp 428B
220_16.bmp 427B
220_16.bmp 427B
172_16.bmp 426B
172_16.bmp 426B
197_16.bmp 425B
197_16.bmp 425B
93_16.bmp 424B
93_16.bmp 424B
185_16.bmp 422B
185_16.bmp 422B
183_16.bmp 420B
183_16.bmp 420B
200_16.bmp 419B
22_16.bmp 419B
200_16.bmp 419B
22_16.bmp 419B
97_16.bmp 418B
57_16.bmp 418B
45_16.bmp 418B
210_16.bmp 418B
168_16.bmp 418B
163_16.bmp 418B
97_16.bmp 418B
57_16.bmp 418B
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
wyscruel
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功