📄 massageboard2.java
字号:
package MassageBoard2;
import java.awt.event.*;
import java.awt.*;
import java.io.IOException;
import java.net.*;
import javax.swing.*;
import javax.swing.event.*;
public class MassageBoard2
{
public static void main(String[] args)
{
MassageBoardFrame frame = new MassageBoardFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
class MassageBoardFrame extends JFrame
{
public MassageBoardFrame()
{
// set frame title
setTitle("MassageBoard");
// get screen dimensions
Toolkit kit = Toolkit.getDefaultToolkit();
Dimension screenSize = kit.getScreenSize();
int screenHeight = screenSize.height;
int screenWidth = screenSize.width;
// center frame in screen
setSize(screenWidth / 2, screenHeight / 2);
setLocation(screenWidth / 4, screenHeight / 11);
MassageBoardPanel panel = new MassageBoardPanel();
add(panel);
pack();
}
}
class MassageBoardPanel extends JPanel
{
public MassageBoardPanel()
{
setLayout(new BorderLayout());
textArea1 = new JTextArea(20,35);
textArea1.setEditable(false);
textArea1.setLineWrap(true);
scrollPane1 = new JScrollPane(textArea1);
textArea1.setBackground(Color.GREEN);
panel1 = new JPanel();
panel1.setLayout(new BorderLayout());
panel1.add(scrollPane1,BorderLayout.CENTER);
panel2 = new JPanel(new BorderLayout());
label1 = new JLabel("FONT");
box1 = new JComboBox();
box1.addItem("Times New Roman");
box1.addItem("Serif");
box1.addItem("SansSerif");
box1.addItem("Monospaced");
box1.addItem("Dialog");
box1.addItem("DialogInput");
box1.addItem("宋体");
box1.addItem("楷体_GB2312");
box1.addItem("黑体");
box1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
fontName = box1.getSelectedItem().toString();
textArea1.setFont(new Font(fontName,Font.PLAIN,fontSize));
}
});
label2 = new JLabel("SIZE");
textField1 = new JTextField(4);
textField1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
fontSize = Integer.parseInt(textField1.getText());
textArea1.setFont(new Font(fontName,Font.PLAIN,fontSize));
}
});
setPanel = new JPanel();
button4 = new JButton("B");
button4.setFont(new Font("",Font.BOLD,14));
button4.addActionListener(new SetStyle());
button5 = new JButton("I");
button5.setFont(new Font("",Font.ITALIC,14));
button5.addActionListener(new SetStyle());
label3 = new JLabel("Expression");
box2 = new JComboBox();
box2.addItem("*_*");
box2.addItem("^_^");
box2.addItem("#_#");
box2.addItem("︶︹︺");
box2.addItem("^︵^");
box2.addItem("@_@");
box2.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
expression = box2.getSelectedItem().toString();
textArea2.append(expression);
}
});
setPanel.add(label1);
setPanel.add(box1);
setPanel.add(label2);
setPanel.add(textField1);
setPanel.add(button4);
setPanel.add(button5);
setPanel.add(label3);
setPanel.add(box2);
ipPanel = new JPanel();
addressField=new JTextField("127.0.0.1",7);
aimPortField=new JTextField("1234",6);
selfPortField=new JTextField("1235",6);
ipButton=new JButton("SET");
ipButton.addActionListener(new setIPAction());
ipPanel.add(new JLabel("AimAddress"));
ipPanel.add(addressField);
ipPanel.add(new JLabel("AimPort"));
ipPanel.add(aimPortField);
ipPanel.add(new JLabel("ListeningPort"));
ipPanel.add(selfPortField);
ipPanel.add(ipButton);
panel1.add(panel2,BorderLayout.SOUTH);
panel2.add(setPanel,BorderLayout.SOUTH);
panel2.add(ipPanel,BorderLayout.NORTH);
this.add(panel1,BorderLayout.CENTER);
try
{
address = InetAddress.getByName(addressField.getText());
aimPort = Integer.parseInt(aimPortField.getText().trim());
selfPort = Integer.parseInt(selfPortField.getText().trim());
}
catch (UnknownHostException e)
{
e.printStackTrace();
}
panel3 = new JPanel();
panel3.setLayout(new BorderLayout());
panel4 = new JPanel();
panel4.setLayout(new BorderLayout());
panel4.add(new JLabel("Name:"),BorderLayout.WEST);
textField2 = new JTextField(10);
panel4.add(textField2,BorderLayout.CENTER);
panel3.add(panel4,BorderLayout.NORTH);
panel5 = new JPanel();
panel5.setLayout(new BorderLayout());
panel5.add(new JLabel("Massage:"),BorderLayout.WEST);
textArea2 = new JTextArea(4,35);
textArea2.setLineWrap(true);
scrollPane2 = new JScrollPane(textArea2);
panel5.add(scrollPane2,BorderLayout.CENTER);
panel3.add(panel5,BorderLayout.CENTER);
panel6 = new JPanel(new GridLayout(1,3,5,0));
button1 = new JButton("Font Color");
button1.addActionListener(new SetColor());
button2 = new JButton("Background Color");
button2.addActionListener(new SetColor());
button3 = new JButton("deliver");
button3.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
String name = textField2.getText();
String word = textArea2.getText();
if(!(textArea2.getText().equals(""))&&!(textField2.getText().equals("")))
{
textArea1.append(" "+name+":\n "+word+"\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
textArea2.setText("");
textArea2.requestFocus();
DatagramSocket ds = null;
try {
ds = new DatagramSocket();
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String message = " "+name+":\n\n "+word+"\n";
DatagramPacket dp = new DatagramPacket(message.getBytes(),message.getBytes().length,address,aimPort);
try
{
ds.send(dp);
ds.close();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
});
textArea2.addKeyListener(new KeyListener()
{
public void keyPressed(KeyEvent e)
{
//TODO Auto-generated method stub
}
public void keyReleased(KeyEvent e)
{
// TODO Auto-generated method stub
}
public void keyTyped(KeyEvent event)
{
if(event.getKeyChar() == '\n'&&event.isControlDown())
{
String name = textField2.getText();
String word = textArea2.getText();
if(!(textArea2.getText().equals(""))&&!(textField2.getText().equals("")))
{
textArea1.append(" "+name+":\n "+word+"\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
textArea2.setText("");
textArea2.requestFocus();
DatagramSocket ds = null;
try {
ds = new DatagramSocket();
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String message = " "+name+":\n\n "+word+"\n";
DatagramPacket dp = new DatagramPacket(message.getBytes(),message.getBytes().length,address,aimPort);
try {
ds.send(dp);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ds.close();
}
}
}
});
panel6.add(button1);
panel6.add(button2);
panel6.add(button3);
panel3.add(panel6,BorderLayout.SOUTH);
this.add(panel3,BorderLayout.SOUTH);
}
private class SetStyle implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
String letter = event.getActionCommand();
times++;
if(times%2 == 0)
{
textArea1.setFont(new Font("", 0, fontSize));
if(letter.equals("B"))
{
button4.setBackground(Color.WHITE);
}
if(letter.equals("I"))
{
button5.setBackground(Color.WHITE);
}
}
else
{
int mode = 0;
if(letter.equals("B"))
{
mode += Font.BOLD;
button4.setBackground(Color.LIGHT_GRAY);
}
if(letter.equals("I"))
{
mode += Font.ITALIC;
button5.setBackground(Color.LIGHT_GRAY);
}
textArea1.setFont(new Font("", mode, fontSize));
}
}
}
private class SetColor implements ActionListener
{
public SetColor()
{
chooser = new JColorChooser();
chooser.getSelectionModel().addChangeListener(new ChangeListener()
{
public void stateChanged(ChangeEvent event)
{
if(s.equals("Font Color"))
{
textArea1.setForeground(chooser.getColor());
}
if(s.equals("Background Color"))
{
textArea1.setBackground(chooser.getColor());
}
}
});
dialog = new JDialog((Frame) null, false);
dialog.add(chooser);
dialog.pack();
}
public void actionPerformed(ActionEvent event)
{
s=event.getActionCommand();
dialog.setVisible(true);
dialog.setTitle(s);
}
private JDialog dialog;
private JColorChooser chooser;
private String s;
}
private class setIPAction implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
try
{
address = InetAddress.getByName(addressField.getText());
aimPort = Integer.parseInt(aimPortField.getText().trim());
selfPort = Integer.parseInt(selfPortField.getText().trim());
}
catch (Exception e) {
}
}
}
private class Receive extends Thread
{
public Receive()
{
super();
start();
}
public void run()
{
//DatagramSocket ds = null;
try
{
ds = new DatagramSocket(selfPort);
}
catch (SocketException e)
{
e.printStackTrace();
}
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf,buf.length);
try
{
ds.receive(dp);
}
catch(NullPointerException e)
{
textArea1.append("此端口已经被使用");
}
catch(IOException e)
{
e.printStackTrace();
}
String message = new String(dp.getData(),0,dp.getLength()) +
"\n from " + dp.getAddress() + ":" + dp.getPort()
+"\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n";
textArea1.append(message);
ds.close();
this.run();
}
DatagramSocket ds = null;
}
private JTextArea textArea1;
private JScrollPane scrollPane1;
private JPanel panel1;
private JLabel label1;
private JComboBox box1;
private JLabel label2;
private JTextField textField1;
private JPanel panel2;
private String fontName;
private int fontSize;
private JPanel panel3;
private JPanel panel4;
private JPanel panel5;
private JTextField textField2;
private JTextArea textArea2;
private JScrollPane scrollPane2;
private JPanel panel6;
private JButton button1;
private JButton button2;
private JButton button3;
private JButton button4;
private JButton button5;
private JPanel ipPanel;
private JPanel setPanel;
private JButton ipButton;
private JTextField addressField;
private JTextField aimPortField;
private JTextField selfPortField;
private InetAddress address;
private int aimPort;
private int selfPort;
private int times = 0;
private JLabel label3;
private JComboBox box2;
private String expression;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -