package ui;
import handler.MessageSender;
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.Date;
import javax.swing.AbstractCellEditor;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JColorChooser;
import javax.swing.JDialog;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JProgressBar;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JToolBar;
import javax.swing.SwingUtilities;
import javax.swing.border.Border;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
import exception.MessageOverflowException;
import util.BasicUtils;
import util.Global;
import util.UIUtils;
public class FileSelectPanel extends JPanel implements ActionListener {
public FileSelectPanel(TalkFrame parentFrame) {
this.parentFrame = parentFrame;
initComponents();
}
private void initComponents() {
this.fileSendProgressBar = new JProgressBar(JProgressBar.HORIZONTAL,0,100);
this.fileSendProgressBar.setStringPainted(true);
this.fileReceiveProgressBar = new JProgressBar(JProgressBar.HORIZONTAL,0,100);
this.fileReceiveProgressBar.setStringPainted(true);
sendFileBtn = new JButton("发送",UIUtils.getImageIcon("images/accept.png"));
sendFileBtn.setToolTipText("发送");
cancelBtn = new JButton("取消",UIUtils.getImageIcon("images/cancel2.png"));
cancelBtn.setToolTipText("关闭");
cancelSendBtn = new JButton(UIUtils.getImageIcon("images/cancel2.png"));
cancelSendBtn.setToolTipText("取消传送");
cancelReceiveBtn = new JButton(UIUtils.getImageIcon("images/cancel2.png"));
cancelReceiveBtn.setToolTipText("取消接收");
addBtn = new JButton("添加",UIUtils.getImageIcon("images/add.png"));
addBtn.setToolTipText("添加文件");
delBtn = new JButton("删除",UIUtils.getImageIcon("images/delete.png"));
delBtn.setToolTipText("删除文件");
receiveBtn = new JButton("接收",UIUtils.getImageIcon("images/accept.png"));
receiveBtn.setToolTipText("接收");
refuseBtn = new JButton("拒绝",UIUtils.getImageIcon("images/cancel2.png"));
refuseBtn.setToolTipText("拒绝");
sendFileBtn.setFocusable(false);
addBtn.setFocusable(false);
delBtn.setFocusable(false);
cancelBtn.setFocusable(false);
cancelSendBtn.setFocusable(false);
cancelReceiveBtn.setFocusable(false);
receiveBtn.setFocusable(false);
refuseBtn.setFocusable(false);
receiveBtn.setEnabled(false);
refuseBtn.setEnabled(false);
JLabel fileSendLabel = new JLabel("发送文件列表:");
JLabel fileReceiveLabel = new JLabel("接收文件列表:");
fileSendTable = new JTable(new MyTableModel(new Object[][]{},new String[]{"状态","文件名","文件大小","文件路径","隐藏列_文件真实大小"}));
fileSendTable.setSelectionBackground(Global.SYS_COLOR_SELECTED);
fileSendTable.setSelectionForeground(fileSendTable.getForeground());
TableColumn c = fileSendTable.getColumnModel().getColumn(0);
c.setCellRenderer(new StateRenderer());
fileSendTable.setRowHeight(fileSendTable.getRowHeight()+5);
fileSendTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); //关闭自动调整大小
fileSendTable.getColumnModel().getColumn(0).setPreferredWidth(87);
fileSendTable.getColumnModel().getColumn(1).setPreferredWidth(200);
fileSendTable.getColumnModel().getColumn(2).setPreferredWidth(90);
fileSendTable.getColumnModel().getColumn(3).setPreferredWidth(300);
//下面两行代码实现隐藏列
fileSendTable.getColumnModel().getColumn(4).setMinWidth(0);
fileSendTable.getColumnModel().getColumn(4).setMaxWidth(0);
fileReceiveTable = new JTable(new MyTableModel(new Object[][]{},new String[]{"状态","文件名","文件大小","存放路径"}));
fileReceiveTable.setSelectionBackground(Global.SYS_COLOR_SELECTED);
fileReceiveTable.setSelectionForeground(fileSendTable.getForeground());
TableColumn sc = fileReceiveTable.getColumnModel().getColumn(0);
sc.setCellRenderer(new StateRenderer());
fileReceiveTable.setRowHeight(fileReceiveTable.getRowHeight()+5);
fileReceiveTable.getColumnModel().getColumn(0).setPreferredWidth(87);
fileReceiveTable.getColumnModel().getColumn(1).setPreferredWidth(200);
fileReceiveTable.getColumnModel().getColumn(2).setPreferredWidth(90);
fileReceiveTable.getColumnModel().getColumn(3).setPreferredWidth(300);
fileReceiveTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); //关闭自动调整大小
JScrollPane fileSendScrollPane = new JScrollPane(fileSendTable,
JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
JScrollPane fileReceiveScrollPane = new JScrollPane(fileReceiveTable,
JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
receiveToolBar = new JToolBar();
receiveToolBar.setBorderPainted(false);
receiveToolBar.add(receiveBtn);
receiveToolBar.add(refuseBtn);
//receiveToolBar.add(cancelBtn);
receiveCardLayout = new CardLayout();
receiveCardPanel = new JPanel(receiveCardLayout);
receiveCardPanel.add(receiveToolBar, "receiveToolBar");
receiveProgressPanel = new JPanel(new BorderLayout());
receiveProgressPanel.add(fileReceiveProgressBar,BorderLayout.CENTER);
receiveProgressPanel.add(cancelReceiveBtn,BorderLayout.EAST);
receiveCardPanel.add(receiveProgressPanel,"receiveProgressBar");
JPanel fileReceiveNorthPanel = new JPanel(new BorderLayout());
fileReceiveNorthPanel.add(fileReceiveLabel,BorderLayout.WEST);
fileReceiveNorthPanel.add(receiveCardPanel,BorderLayout.CENTER);
JPanel fileReceivePanel = new JPanel(new BorderLayout(0,0));
fileReceivePanel.add(fileReceiveNorthPanel,BorderLayout.NORTH);
fileReceivePanel.add(fileReceiveScrollPane,BorderLayout.CENTER);
sendToolBar = new JToolBar();
sendToolBar.setBorderPainted(false);
sendToolBar.add(addBtn);
sendToolBar.add(delBtn);
sendToolBar.add(sendFileBtn);
sendCardLayout = new CardLayout();
sendCardPanel = new JPanel(sendCardLayout);
sendCardPanel.add(sendToolBar, "sendToolBar");
sendProgressPanel = new JPanel(new BorderLayout());
sendProgressPanel.add(fileSendProgressBar,BorderLayout.CENTER);
sendProgressPanel.add(cancelSendBtn,BorderLayout.EAST);
sendCardPanel.add(sendProgressPanel,"sendProgressBar");
JPanel fileSendNorthPanel = new JPanel(new BorderLayout());
fileSendNorthPanel.add(fileSendLabel,BorderLayout.WEST);
fileSendNorthPanel.add(sendCardPanel,BorderLayout.CENTER);
JPanel fileSendPanel = new JPanel(new BorderLayout(0,0));
fileSendPanel.add(fileSendNorthPanel,BorderLayout.NORTH);
fileSendPanel.add(fileSendScrollPane,BorderLayout.CENTER);
sendFileBtn.addActionListener(this);
cancelBtn.addActionListener(this);
cancelSendBtn.addActionListener(this);
cancelReceiveBtn.addActionListener(this);
addBtn.addActionListener(this);
delBtn.addActionListener(this);
receiveBtn.addActionListener(this);
refuseBtn.addActionListener(this);
popMenu = new JPopupMenu();
JMenuItem addFile = new JMenuItem("增加");
popMenu.add(addFile);
this.add(popMenu);
fileSendTable.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(MouseEvent e) {
if (SwingUtilities.isRightMouseButton(e)) {
//先选中右击时鼠标所在的行
int row = fileSendTable.rowAtPoint(e.getPoint());
if(row>=0)
fileSendTable.setRowSelectionInterval(row,row);
//再弹出右击菜单
popMenu.show(fileSendTable, e.getX(), e
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
用java socket编写的局域网聊天和文件传送,类似飞秋,但没那么多功能,目前实现的功能有:聊天,发送窗口抖动,传送文件,其中传送文件采用TCP实现,其他的用UDP实现。本文件包含源代码和用到的jar包,代码结构清晰,注释较多,相信对于学习java网络编程(以及swing界面开发)的朋友会有一定的帮助
资源推荐
资源详情
资源评论
收起资源包目录
messager.rar (99个子文件)
MyMessager
bin
handler
MessageSender.class 4KB
MessageReceiver.class 7KB
exception
MessageOverflowException.class 453B
images
book_go.png 745B
sending.gif 2KB
refresh.png 576B
accepting.png 652B
bell.png 789B
information.png 778B
user_24.png 1022B
user_32.png 1KB
completed.png 781B
send.png 652B
cancel.png 773B
emotion_smile.png 725B
user_48.png 2KB
file.png 575B
delete.png 715B
computer.png 1KB
user2_48.png 2KB
accept.png 781B
add.png 733B
wait.png 726B
basket_put.png 733B
shake.png 551B
cancel2.png 587B
basket_remove.png 738B
db
DBUtils.class 7KB
sound
alarm.au 45KB
bean
User.class 2KB
TbMsg.class 3KB
Message.class 3KB
ui
MainFrame.class 7KB
MyListCellRenderer.class 2KB
MyTableModel.class 542B
TalkFrame$1.class 715B
FileSelectPanel.class 13KB
MainFrame$2.class 855B
FileSelectPanel$1.class 2KB
MainFrame$1.class 2KB
TalkFrame.class 12KB
StateRenderer.class 2KB
util
Test.class 413B
BasicUtils.class 3KB
SysUtils.class 945B
NetUtils.class 2KB
Global.class 3KB
UIUtils.class 4KB
p2p
Server.class 5KB
Client.class 4KB
.settings
org.eclipse.jdt.core.prefs 598B
src
handler
MessageReceiver.java 5KB
MessageSender.java 4KB
exception
MessageOverflowException.java 217B
images
book_go.png 745B
sending.gif 2KB
refresh.png 576B
accepting.png 652B
bell.png 789B
information.png 778B
user_24.png 1022B
user_32.png 1KB
completed.png 781B
send.png 652B
cancel.png 773B
emotion_smile.png 725B
user_48.png 2KB
file.png 575B
delete.png 715B
computer.png 1KB
user2_48.png 2KB
accept.png 781B
add.png 733B
wait.png 726B
basket_put.png 733B
shake.png 551B
cancel2.png 587B
basket_remove.png 738B
db
DBUtils.java 6KB
sound
alarm.au 45KB
bean
TbMsg.java 3KB
User.java 1KB
Message.java 2KB
ui
FileSelectPanel.java 17KB
TalkFrame.java 12KB
MainFrame.java 9KB
util
SysUtils.java 545B
BasicUtils.java 3KB
UIUtils.java 3KB
NetUtils.java 1KB
Global.java 4KB
Test.java 908B
p2p
Server.java 4KB
Client.java 3KB
.project 386B
.classpath 423B
libs
commons-codec-1.8.jar 258KB
sqlitejdbc-v053.jar 2.16MB
Messager.jar 2.51MB
共 99 条
- 1
nevermore602
- 粉丝: 9
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
前往页