addtalkingfriends.java
来自「这是一个使用Java编写的像QQ一样的即时通讯软件」· Java 代码 · 共 289 行
JAVA
289 行
package client;
import java.awt.Color;
import java.awt.Component;
import java.awt.ComponentOrientation;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException;
import java.util.Vector;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.ListCellRenderer;
import javax.swing.WindowConstants;
import com.swtdesigner.SwingResourceManager;
public class AddTalkingFriends extends JFrame {
public JList talkingFriendsList;
public JList goodFriendsList;
private static final long serialVersionUID = -7025933618712924982L;
private AddTalkingFriends addTalkingFriends;
/**
* Create the frame
*/
public AddTalkingFriends(final TalkInterface talkInterface) {
super();
addWindowListener(new WindowAdapter() {
public void windowClosing(final WindowEvent e) {
Vector<String> talkingListValues = new Vector<String>();
for (int i = 0; i < talkInterface.talkingFriends.size(); i++) {
talkingListValues.add(talkInterface.talkingFriends.get(i)
+ "@"
+ Client.goodFriends
.get(talkInterface.talkingFriends.get(i)));
}
talkInterface.list.setListData(talkingListValues);
}
});
setResizable(false);
getContentPane().setLayout(null);
setBounds(100, 100, 472, 383);
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
addTalkingFriends = this;
final JScrollPane goodFriendsScrollPane = new JScrollPane();
goodFriendsScrollPane.setBounds(61, 10, 122, 290);
getContentPane().add(goodFriendsScrollPane);
MyCellRenderer myCellRenderer = new MyCellRenderer();
goodFriendsList = new JList();
goodFriendsList.setFont(new Font("宋体", Font.PLAIN, 12));
goodFriendsList.setCellRenderer(myCellRenderer);
goodFriendsScrollPane.setViewportView(goodFriendsList);
final JScrollPane talkingFriendsScrollPane = new JScrollPane();
talkingFriendsScrollPane.setBounds(238, 10, 114, 290);
getContentPane().add(talkingFriendsScrollPane);
talkingFriendsList = new JList();
talkingFriendsList.setCellRenderer(myCellRenderer);
talkingFriendsList.setFont(new Font("宋体", Font.PLAIN, 12));
talkingFriendsScrollPane.setViewportView(talkingFriendsList);
final JLabel label = new JLabel();
label.setOpaque(true);
label.addMouseListener(new MouseAdapter() {
public void mousePressed(final MouseEvent e) {
label.setBackground(Color.lightGray);
Object[] selectedvalues = goodFriendsList.getSelectedValues();
for (int i = 0; i < selectedvalues.length; i++) {
String s = selectedvalues[i].toString();
Integer number = new Integer(s.substring(0, s.indexOf("@")));
if (!talkInterface.talkingFriends.contains(number)) {
talkInterface.talkingFriends.add(number);
}
}
Vector<String> talkingListValues = new Vector<String>();
for (int i = 0; i < talkInterface.talkingFriends.size(); i++) {
talkingListValues.add(talkInterface.talkingFriends.get(i)
+ "@"
+ Client.goodFriends
.get(talkInterface.talkingFriends.get(i)));
}
talkingFriendsList.setListData(talkingListValues);
}
public void mouseReleased(final MouseEvent e) {
label.setBackground(null);
}
});
label.setFont(new Font("", Font.PLAIN, 14));
label.setIcon(SwingResourceManager.getIcon(AddTalkingFriends.class,
"/images/Forum_readme.gif"));
label.setText("添加");
label.setBounds(189, 140, 43, 23);
getContentPane().add(label);
final JLabel label_1 = new JLabel();
label_1.setOpaque(true);
label_1.addMouseListener(new MouseAdapter() {
public void mousePressed(final MouseEvent e) {
label_1.setBackground(Color.lightGray);
Object[] selectedValues = talkingFriendsList
.getSelectedValues();
String s = "";
for (int i = 0; i < selectedValues.length; i++) {
s = selectedValues[i].toString();
talkInterface.talkingFriends.remove(new Integer(s
.substring(0, s.indexOf("@"))));
}
Vector<String> talkingListValues = new Vector<String>();
for (int i = 0; i < talkInterface.talkingFriends.size(); i++) {
talkingListValues.add(talkInterface.talkingFriends.get(i)
+ "@"
+ Client.goodFriends
.get(talkInterface.talkingFriends.get(i)));
}
talkingFriendsList.setListData(talkingListValues);
}
public void mouseReleased(final MouseEvent e) {
label_1.setBackground(null);
}
});
label_1.setFont(new Font("", Font.PLAIN, 14));
label_1.setIcon(SwingResourceManager.getIcon(AddTalkingFriends.class,
"/images/Forum_readme.gif"));
label_1.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
label_1.setText("删除");
label_1.setBounds(358, 144, 43, 15);
getContentPane().add(label_1);
final JButton button = new JButton();
button.addActionListener(new ActionListener() {
public void actionPerformed(final ActionEvent e) {
Vector<String> talkingListValues = new Vector<String>();
String numberOfGroupTalkFriends = ("@" + Client.number);
Client.talkInterfaces.remove(talkInterface.talkingNumber);
talkInterface.talkingNumber = -1;
if (Client.tempGroupTalkInterfaceIds.isEmpty()) {
talkInterface.groupTalkInterfaceId = Client.groupTalkInterfaceIds
.size();
Client.groupTalkInterfaceIds
.add(Client.groupTalkInterfaceIds.size());
} else {
talkInterface.groupTalkInterfaceId = Client.tempGroupTalkInterfaceIds
.lastElement();
Client.groupTalkInterfaceIds
.add(Client.tempGroupTalkInterfaceIds.lastElement());
Client.tempGroupTalkInterfaceIds
.remove(Client.tempGroupTalkInterfaceIds.size() - 1);
}
talkInterface.setTitle("你在与多人聊天");
talkInterface.inviterNumber = talkInterface.groupTalkInterfaceId;
Client.grouptalkInterfaces.put(talkInterface.groupTalkInterfaceId, talkInterface);
Client.mapGrouptalkInterfaces.put(
talkInterface.groupTalkInterfaceId,
talkInterface.groupTalkInterfaceId);
for (int index = 0; index < talkInterface.talkingFriends.size(); index++) {
numberOfGroupTalkFriends += ("@" + talkInterface.talkingFriends
.get(index));
}
for (int i = 0; i < talkInterface.talkingFriends.size(); i++) {
try {
talkInterface.sendToServer.writeUTF("GroupTalkInvite@"
+ talkInterface.talkingFriends.get(i) + "@"
+ talkInterface.groupTalkInterfaceId
+ numberOfGroupTalkFriends);
} catch (IOException e1) {
e1.printStackTrace();
}
talkingListValues.add(talkInterface.talkingFriends.get(i)
+ "@"
+ Client.goodFriends
.get(talkInterface.talkingFriends.get(i)));
}
talkInterface.list.setListData(talkingListValues);
addTalkingFriends.dispose();
}
});
button.setText("确 定");
button.setBounds(176, 306, 63, 33);
getContentPane().add(button);
}
class MyCellRenderer extends JLabel implements ListCellRenderer {
/**
*
*/
private static final long serialVersionUID = 8668388946915381179L;
public Component getListCellRendererComponent(JList list, Object value,
int index, // cell index
boolean isSelected, // is the cell selected
boolean cellHasFocus) // the list and the cell have the focus
{
String s = value.toString();
setText(s.substring(s.indexOf("@") + 1));
setName(s.substring(0, s.indexOf("@") - 1));
if (isSelected) {
setBackground(list.getSelectionBackground());
setForeground(list.getSelectionForeground());
} else {
setBackground(list.getBackground());
setForeground(list.getForeground());
}
setEnabled(list.isEnabled());
setFont(list.getFont());
setOpaque(true);
return this;
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?