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 + -
显示快捷键?