分析:
JTextField是文本框,只能去接收单行文本的输入,在本程序里面做的是输入框
JTextArea是文本域,它能接收多行文本的输入, 在本程序里面做的是显示输出的信息
JTextField常用的方法:
setText(String text)
:设置文本框中显示的文本内容。getText()
:获取用户在文本框中输入的文本内容。setEditable(boolean editable)
:设置文本框是否可编辑。setHorizontalAlignment(int alignment)
:设置文本在文本框中的水平对齐方式,可选值包括SwingConstants.LEFT
、SwingConstants.CENTER
和SwingConstants.RIGHT
。setColumns(int columns)
:设置文本框的列数,用于限制输入的字符数。setPreferredSize(Dimension size)
:设置文本框的首选尺寸。setFont(Font font)
:设置文本框中文本的字体。setForeground(Color color)
:设置文本框中文本的前景色。setBackground(Color color)
:设置文本框的背景色。selectAll()
:选中文本框中的所有文本。
JTextField和JTextArea两个组件的方法大部分都是文本输入相关的方法,并且有一些方法是共同继承自JTextComponent类的。因此这两个组件的方法确实有很多相似之处。
不过,由于JTextArea可以显示多行文本,所以它有一些独特的方法,例如setLineWrap()
、setWrapStyleWord()
和setRows()
等,这些方法在JTextField中是没有对应的方法的。
代码:
import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
public class Main2 {
public static void createAndShowGUI() {
JFrame f = new JFrame("聊天窗口");
f.setLayout(new BorderLayout());
f.setSize(400, 300);
f.setLocation(300, 200);
f.setVisible(true);
f.setDefaultCloseOperation(3);//点×的时候 退出程序
//创建一个JTextArea文本域 用来显示多行的信息的输出
JTextArea showArea = new JTextArea(12, 34);
//创建一个JScrollPane滚动面板的组件 将JTextArea作为显示组件
JScrollPane scrollPane = new JScrollPane(showArea);
showArea.setEditable(false);//设置文本域不可以去编辑
//创建文本框 JTextField 输入单行的聊天信息
JTextField inputField = new JTextField(20);
JButton btn = new JButton("发送");
btn.addActionListener(e-> {//按钮监听
send(showArea, inputField);
});
inputField.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {//按下回车 表示发送信息
if(e.getKeyCode() == 10) {//回车的code是10
send(showArea, inputField);
}
}
});
//创建JPanel面板组件
JPanel panel = new JPanel();
JLabel lable = new JLabel("聊天信息");
panel.add(lable);
panel.add(inputField);
panel.add(btn);
f.add(scrollPane, BorderLayout.PAGE_START);
f.add(panel, BorderLayout.PAGE_END);
}
public static void send(JTextArea showArea, JTextField inputField) {
String content = inputField.getText();
if(content != null && !content.trim().equals("")) {
showArea.append("本人的输入信息是: " + content + "\n");
//发送之后 记得清空
} else {
showArea.append("聊天信息不可以为空!!!" + "\n");
}
inputField.setText("");
}
public static void main(String[] args) {
//本案例创建的是一个JFrame的聊天室
SwingUtilities.invokeLater(Main2::createAndShowGUI);
}
}