📄 ipmsgmainfrm.java
字号:
paneBottom.setLayout(new BorderLayout(3,3));
paneBottom.add(paneSendList,BorderLayout.NORTH);
paneBottom.add(new JScrollPane(areaChat,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED));
paneBottom.add(paneSouth,BorderLayout.SOUTH);
paneBottom.setMinimumSize(new Dimension(200,120));
JSplitPane split = new JSplitPane(JSplitPane.VERTICAL_SPLIT,true);
split.setOneTouchExpandable(false);
split.setDividerLocation(140);
split.setLeftComponent(paneTop);
split.setRightComponent(paneBottom);
split.setBorder(null);
add(new FillWidth(8,8),BorderLayout.WEST);
add(split);
add(new FillWidth(8,8),BorderLayout.EAST);
}
/**
* 按钮点击事件。
*/
public void actionPerformed(ActionEvent e) {
if(e.getSource()==boxIsPackage){
boxIsLock.setEnabled(boxIsPackage.isSelected());
boxIsLock.setSelected(false);
return;
}
if(e.getSource()==btnSendList){
listDialog.setVisible(true);
}
if(e.getSource()==itemAbout){
if(about == null)
about = new About(this,"关于飞鸽传书",true);
else
about.setVisible(true);
return;
}
if(e.getSource()==itemShow){
if(!isVisible())
setVisible(true);
else
setState(NORMAL);
return;
}
if(e.getSource()==itemMonitor){
if(monitor == null)
monitor = new FileSendMonitor();
else
monitor.setVisible(true);
return;
}
if(e.getSource()==itemSetTop){
if(!isVisible())
setVisible(true);
else
setState(NORMAL);
setAlwaysOnTop(true);
return;
}
if(e.getSource()==itemSeeLog){
//JOptionPane.showMessageDialog(null, "功能制作中...");
return;
}
if(e.getSource()==itemQuit){
return;
}
}
public void tableChanged(TableModelEvent e) {
lblOnlineNum.setText(model.getRowCount()+"");
if(trayIcon!=null)
trayIcon.setToolTip("飞鸽传书("+model.getRowCount()+")");
}
/**
* 窗体关闭时触发事件。
*/
private class MyWindowAdapter extends WindowAdapter{
public void windowClosing(WindowEvent e) {
//super.windowClosing(e);
System.exit(0);
}
}
private class MyMouseAdapter extends MouseAdapter{
@Override
public void mouseClicked(MouseEvent e) {
if(e.getSource()==trayIcon && e.getClickCount()==2)
if(!isVisible())
setVisible(true);
else
setState(NORMAL);
}
}
/**
* table的Model
*/
public class MyDefaultTableModel extends DefaultTableModel{
@Override
public boolean isCellEditable(int row, int column) {
return false;
}
/**
* 如果行中存在user,则不添加,否则添加
* @param user
* @return user对象添加到行中时,返回true,否则返回false
*/
public boolean addUser(User user){
if(user!=null){
for(int i=0;i<getRowCount();i++){
User xuser = getRow(i);
if(xuser.equals(user))
return false;
}
String[] rows = {user.getUserName(),user.getHostName(),user.getIpAdress(),user.getLoginName(),user.getPriority()};
addRow(rows);
return true;
}
return false;
}
/**
* 得到某行的User对象
* @param n 行数
* @return 如果列数>5,根据前五列构造User对象。否则返回空。
*/
public User getRow(int n){
if(getColumnCount()>=5){
User user = new User();
user.setUserName(getValueAt(n, 0).toString());
user.setHostName(getValueAt(n, 1).toString());
user.setIpAdress(getValueAt(n, 2).toString());
user.setLoginName(getValueAt(n, 3).toString());
user.setPriority(getValueAt(n, 4).toString());
return user;
}else
return null;
}
/**
* 根据第3列及判断ip是否相同删除某行
* @param ip ip地址
* @return ip存在删除成功,返回true,否则false
*/
public boolean removeFromIP(String ip){
for(int i=0;i<getRowCount();i++)
if(getValueAt(i, 2).toString().equals(ip)){
remove(i);
return true;
}
return false;
}
/**
* 获取某行所表示的ip地址
* @param n 行数
* @return 返回ip地址
*/
public String getIpAddress(int n){
return getValueAt(n, 2).toString();
}
public String getUserInfo(String ip){
for(int i=0;i<getRowCount();i++)
if(getValueAt(i, 2).toString().equals(ip)){
User user = getRow(i);
return user.getUserName()+" ("+user.getHostName()+")";
}
return null;
}
}
/**
* 拖拽事件。
*/
private class MyDropTargetAdapter extends DropTargetAdapter{
@SuppressWarnings("unchecked")
public void drop(DropTargetDropEvent dtde) {
dtde.acceptDrop(DnDConstants.ACTION_COPY);
Transferable transferable = dtde.getTransferable();
DataFlavor[] flavors = transferable.getTransferDataFlavors();
for(DataFlavor flavor:flavors){
if(flavor.equals(DataFlavor.javaFileListFlavor)){
try {
List<File> files = (List<File>)transferable.getTransferData(flavor);
for(File file:files)
if(listDialog.model.addFile(file)){
paneSendList.setPreferredSize(new Dimension(500,28));
setSendFileList(listDialog.getSendFile());
}
} catch (UnsupportedFlavorException e) {
System.out.println("转换错误:"+e.getMessage());
} catch (IOException e) {
System.out.println("转换错误:"+e.getMessage());
}
}
}
}
}
/**
* 设置传输文件列表
* @param str 传输文件的列表的字符串
*/
public void setSendFileList(String str){
btnSendList.setText(str);
if(str.equals(""))
paneSendList.setPreferredSize(new Dimension(500,3));
}
/**
* 获取发送内容
* @return 返回发送内容的字符串
*/
public String getContent(){
String content = "";
content = "["+DateDeal.getAllDate(new Date())+"]"+listDialog.getSendPath()+areaChat.getText();
//System.out.println(content);
return content;
}
/**
* 获取发送文件的列表。
* @return 返回发送文件的列表。
*/
public String getSendList(){
return listDialog.getSendList();
}
/**
* 清空发送文件的列表。
*/
public void clearSendList(){
listDialog.clearSendList();
}
/**
* 清空table中内容
*/
public void clearTable(){
if(model!=null)
model.setRowCount(0);
}
/**
* 获取选中的行。
* @return 返回选中的行。
*/
public int[] getSelectRow(){
return tableUser.getSelectedRows();
}
/**
* 清空聊天窗口。
*/
public void clearChat(){
areaChat.setText("");
setSendFileList("");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -