📄 chatpanel.java
字号:
package chat;
import java.awt.event.*;
import java.util.GregorianCalendar;
import cchess.ChessApp;
import javax.swing.*;
import javax.swing.border.BevelBorder;
import net.*;
public class ChatPanel extends JPanel{
JTextArea inputArea ;
JList talkArea ;
DefaultListModel mode;
JScrollPane scrollPane;
JButton sendButton = new JButton("发送");
JButton cancelButton = new JButton("取消");
Net netSpeaker;
public ChatPanel(Net net){
System.out.println("ChatPanel");
netSpeaker = net;
setLayout(null);
addText1();
addText2();
addSendButton();
addCancelButton();
}
private void addText1(){
mode = new DefaultListModel();
talkArea = new JList(mode); //构造一个 JList,使其使用指定的非 null 模型显示元素。
talkArea.setFixedCellWidth(330); //设置列表中每个单元的宽度。
talkArea.setFixedCellHeight(20); //设置列表中每个单元的高度
scrollPane = new JScrollPane();
scrollPane.setComponentOrientation(java.awt.ComponentOrientation.UNKNOWN);
scrollPane.getViewport().setView(talkArea);
scrollPane.setViewportBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
scrollPane.setBounds(ChessApp.getX(5),ChessApp.getY(5),ChessApp.getX(310),ChessApp.getY(380));
this.add(scrollPane);
}
private void addText2(){
inputArea = new JTextArea("哈哈");
inputArea.requestFocusInWindow();
inputArea.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e){
if(e.getKeyCode()==KeyEvent.VK_ENTER)
sendChatMsg();
}
});
scrollPane = new JScrollPane();
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
scrollPane.getViewport().setView(inputArea);
scrollPane.setViewportBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
scrollPane.setBounds(ChessApp.getX(5),ChessApp.getY(400),ChessApp.getX(310),ChessApp.getY(120));
this.add(scrollPane);
}
private void addSendButton(){
this.add(sendButton);
sendButton.setBounds(ChessApp.getX(170),ChessApp.getY(530),ChessApp.getX(60),ChessApp.getY(25));
sendButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent okb){
sendChatMsg();
}
});
}
private void addCancelButton(){
this.add(cancelButton);
cancelButton.setBounds(ChessApp.getX(253),ChessApp.getY(530),ChessApp.getX(60),ChessApp.getY(25));
cancelButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ceb){
inputArea.setText(null);
}
});
}
private void sendChatMsg(){
if(Net.hasConnected){
if(inputArea.getText().equals("")){
JOptionPane.showMessageDialog(null," 靠,不要发空信息!");
return;
}
String textInput = inputArea.getText();
inputArea.setText(null);
String s = textInput+"\n";
GregorianCalendar time = new GregorianCalendar();
String timestr = new String(" "+String.valueOf(time.get(GregorianCalendar.AM_PM)*12+time.get(GregorianCalendar.HOUR))+":"+String.valueOf(time.get(GregorianCalendar.MINUTE))
+":"+String.valueOf(time.get(GregorianCalendar.SECOND)));
netSpeaker.sendMessage("chat#"+Net.getMyAdress()+" "+timestr+"\n"+s);//发送
//"chat#"标记该信息为聊天信息
mode.addElement("\n"+Net.getMyAdress()+" "+timestr);
mode.addElement(s);
talkArea.ensureIndexIsVisible(mode.getSize()-1);//滚动视口,使指定单元完全可见。
inputArea.requestFocusInWindow();
}
}
public void dealMsg(String msg){
// String chatmsg = msg.substring(msg.indexOf('#'));
mode.addElement("\n"+msg);
talkArea.ensureIndexIsVisible(mode.getSize()-1);//滚动视口,使指定单元完全可见。
inputArea.requestFocusInWindow();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -