JTextPane写一个聊天框
时间: 2024-05-09 18:17:12 浏览: 7
可以通过以下步骤创建一个聊天框:
1. 创建一个JTextPane组件
2. 设置JTextPane组件的样式,如字体、颜色等
3. 创建一个JScrollPane组件,并将JTextPane组件添加到其中
4. 将JScrollPane组件添加到容器中
5. 添加一个KeyListener来检测用户输入并将其添加到JTextPane组件中
6. 创建一个类来处理与聊天机器人的交互,并将其显示在JTextPane组件中。
以下是实现这些步骤的示例代码:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class ChatBox extends JFrame implements KeyListener {
private JTextPane chatPane;
private JScrollPane scrollPane;
public ChatBox() {
setTitle("Chat Box");
setSize(400, 400);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
chatPane = new JTextPane();
chatPane.setEditable(false);
chatPane.setPreferredSize(new Dimension(380, 350));
chatPane.setFocusable(false);
chatPane.setContentType("text/html");
scrollPane = new JScrollPane(chatPane);
scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scrollPane.setPreferredSize(new Dimension(380, 350));
Container contentPane = getContentPane();
contentPane.setLayout(new FlowLayout());
contentPane.add(scrollPane);
addKeyListener(this);
setVisible(true);
}
private void sendMessage(String message) {
String prompt = "<span style='font-weight:bold;color:#305f8c;'>You:</span> ";
String response = "<span style='font-weight:bold;color:#228b22;'>Bot:</span> ";
try {
chatPane.getDocument().insertString(chatPane.getDocument().getLength(), prompt + message + "<br>", null);
} catch (Exception e) {
e.printStackTrace();
}
String botResponse = ChatBot.getResponse(message);
try {
chatPane.getDocument().insertString(chatPane.getDocument().getLength(), response + botResponse + "<br>", null);
} catch (Exception e) {
e.printStackTrace();
}
chatPane.setCaretPosition(chatPane.getDocument().getLength());
}
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
String message = chatPane.getText().trim();
if (!message.isEmpty()) {
sendMessage(message);
}
chatPane.setText("");
}
}
@Override
public void keyReleased(KeyEvent e) {}
@Override
public void keyTyped(KeyEvent e) {}
public static void main(String[] args) {
new ChatBox();
}
}
```
这个类创建了一个聊天框,并实现了一个简单的机器人用于与用户的交互。用户可以键入消息并按下Enter键,消息将显示在聊天框中,并使用ChatBot类生成一个响应。这个例子使用HTML标记来格式化聊天框的文本。