这是上学期JAVA选修课课下的一道简单的线上家庭作业题,题目描述如下:
总的来说就是要按照它的描述写一个聊天室界面。由于是选修课要求不高,老师只要求我们写出大致界面即可不用实现具体功能,不过闲来无事我还是给它加了一个简单的监听器用以传递消息。话不多说上代码:
一、界面类:
1、框架与设置布局就不说了
//框架
JFrame jFrame = new JFrame("Chat Display ClientA");
jFrame.setSize(500, 500);
jFrame.setResizable(false);
jFrame.setLocationRelativeTo(null);
jFrame.setDefaultCloseOperation(3);
//设置流式布局
jFrame.setLayout(new FlowLayout());
2、设置并完善菜单栏
//设置菜单栏并添加到界面
JMenuBar jMenuBar = new JMenuBar();
jMenuBar.setPreferredSize(new Dimension(450, 30));
jFrame.add(jMenuBar);
//在菜单栏中添加菜单
JMenu jMenu01 = new JMenu("File");
JMenu jMenu02 = new JMenu("Action");
jMenuBar.add(jMenu01);
jMenuBar.add(jMenu02);
//给对应的菜单设置多个选项
JMenuItem jMenuItem01 = new JMenuItem("Save");
JMenuItem jMenuItem02 = new JMenuItem("Eixt");
jMenu01.add(jMenuItem01);
jMenu01.add(jMenuItem02);
此段代码最终实现的效果如下:
3、设置与关键字相链接的文本框
//设置文本框并设置为不可编辑
JTextArea jTextArea01 = new JTextArea(18, 40);
jTextArea01.setEditable(false);
JTextArea jTextArea02 = new JTextArea(18, 40);
jTextArea02.setEditable(false);
//两个文本框与不同关键字链接,并重合于一个区域
JTabbedPane jTabbedPane = new JTabbedPane(JTabbedPane.BOTTOM);
jTabbedPane.add("public", jTextArea01);
jTabbedPane.add("private", jTextArea02);
jFrame.add(jTabbedPane);
此段代码最终实现的效果如下:
4、设置好友列表与编辑发送区域
//设置发送者标签和好友列表并添加到界面
JLabel jLabel01 = new JLabel("Send To");
String listData[] = {"长长","卓洋","浩浩","public"};
JComboBox<String> jComboBox = new JComboBox<>(listData);
jComboBox.setPreferredSize(new Dimension(400, 30));
jFrame.add(jLabel01);
jFrame.add(jComboBox);
//设置编辑、发送信息的区域并添加到界面
JLabel jLabel02 = new JLabel("Message");
JTextField jTextField = new JTextField();
jTextField.setPreferredSize(new Dimension(330, 30));
JButton jButton = new JButton("Send");
jFrame.add(jLabel02);
jFrame.add(jTextField);
jFrame.add(jButton);
此段代码最终实现效果如下:
5、设置可见并给发送按钮加监听器
//设置可见
jFrame.setVisible(true);
//加监听器并传参
CListener listener = new CListener(jTextField,jComboBox,jTextArea01,jTextArea02);
//给发送按钮加监听器
jButton.addActionListener(listener);
二、监听器类
很简单的监听器,直接上代码:
public class CListener implements ActionListener{
JTextField jTextField = new JTextField();
JComboBox <String> jComboBox = new JComboBox<>();
JTextArea jTextArea01 = new JTextArea();
JTextArea jTextArea02 = new JTextArea();
//构造函数传参
public CListener(JTextField jTextField , JComboBox<String> jComboBox, JTextArea jTextArea01,JTextArea jTextArea02){
this.jTextField = jTextField;
this.jComboBox = jComboBox;
this.jTextArea01 = jTextArea01;
this.jTextArea02 = jTextArea02;
}
public void actionPerformed(ActionEvent e){
if(e.getActionCommand().equals("Send")){ //监听到点击了发送按钮
if(jComboBox.getSelectedItem().equals("长长") || jComboBox.getSelectedItem().equals("卓洋")
|| jComboBox.getSelectedItem().equals("浩浩")){ //如果是发给好友则在private文本框中显示发送信息
jTextArea02.setText(jTextField.getText());
}else if(jComboBox.getSelectedItem().equals("public")){ //否则在public文本框中显示发送信息
jTextArea01.setText(jTextField.getText());
}
}
}
}
最终实现效果如下:
如果在好友列表中任意选择一位好友,点击“Send”按钮发送信息,则信息会显示在private对应的文本框中:
如果在好友列表中选择public,点击“Send”按钮发送信息,则信息会显示在public对应的文本框中:
That’s all,over!
小结:
JMenuBar:菜单栏
JMenu:菜单栏中的各个菜单
JMenuItem:菜单中的各个选项
JTextArea:文本框
JTextArea中的setEditable(true/false)方法:设置文本框是否可编辑
JTabbedPane:可让多个文本框重合的区域
JTabbedPane中的add(String,JTextArea)方法:将文本框与某个关键字链接为一个整体,并加入到各文本框重合区域
JComboBox:下拉列表