GUI之Swing的组件的JTextField和JTextArea

package gui;
import java.awt.BorderLayout;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class T12 {
    /*
     * 文本组件用于接受用户输入的信息或向用户展示信息,
     */
    public static void main(String[] args) {
        JFrame jfjf = new JFrame("聊天窗口");//创建窗体,名称为“聊天窗口”
        JButton sendBt;//创建按钮对象sendBt
        JTextField inputField;//JTextField(int columns)创建一个具有指定列数的文本框,初始字符串为null
        JTextArea chatContent;//JTextArea(int rows,int columns)创建具有指定行和列的空的文本域
//        BorderLayout边界布局管理器,东南西北中
        jfjf.setLayout(new BorderLayout());
//        创建一个具有指定行和列的空文本域,12行,34列
        chatContent = new JTextArea(12,34);
//        设置文本域不可编辑
        chatContent.setEditable(false);
//        创建一个滚动面板,将文本域作为其显示组件
        JScrollPane sp = new JScrollPane(chatContent);
//        将滚动面板添加到JFrame窗口中央(JFrame窗口布局格式为BorderLayout)
        jfjf.add(sp, BorderLayout.CENTER);
//        创建一个JPanel面板
        JPanel jpanel = new JPanel();
//        创建一个具有指定列数的文本框,如果不填参数初始字符串为null,这里字符串为20
        inputField = new JTextField(20);
//        创建一个发送按钮
        sendBt = new JButton("发送");
        
        MygActionListener m = new MygActionListener(chatContent,inputField);
//        为按钮添加事件
        sendBt.addActionListener(m);
//        创建一个标签
        Label labe = new Label("聊天信息");
//        将标签添加到JPanel面板
        jpanel.add(labe);
//        将文本输入框添加到JPanel面板
        jpanel.add(inputField);
//        将按钮添加到JPanel面板
        jpanel.add(sendBt );
//        将滚动面板和JPanel面板添加到JFrame窗口南部(JFrame窗口布局格式为BorderLayout)
        jfjf.add(jpanel, BorderLayout.SOUTH);
        
        jfjf.setSize(400, 400);
        jfjf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jfjf.setVisible(true);
    }

}
class MygActionListener implements ActionListener {
    //主要是想在另一个类里面,使用JLabel的对象,如何使用呢?如何传递同一个实例对象
    //为了使用main方法中的lab对象,必须将这个实例通过被使用处的类的构造方法传递过来。
    JTextArea chatContent;
    JTextField inputField;
    public MygActionListener() {

    }
    public MygActionListener(JTextArea chatContent,JTextField inputField) {
        this.chatContent = chatContent;
        this.inputField = inputField;
    }
    public void actionPerformed(ActionEvent e) {
//        获取输入的文本信息
        String content = inputField.getText();
//      判断输入的信息是否为空。String类的trim()函数去除了字符串前后两端的所有包括空格、换行、回车、等字符
        if(content != null && !content.trim().equals("")) {
//            如果不为空,将输入的文本追加到聊天窗口
            chatContent.append("本人:"+content+"\n");
        }else {
//            如果为空,提示聊天信息不能为空
            chatContent.append("聊天信息不能为空"+"\n");
        }
//        将输入后的文本框内容置为空
        inputField.setText("");
    }
}

结果如下

可能有的电脑输出的是乱码,处理方式如下:

点开run Configurations,将common设置为GBK。到这一步执行就没问题了。

(如果还不行,再点Arguments的VM arguments填入-Dfile.encoding=gbk。点击Apply,再点击run,这样就可以使图片和控制台都正常显示)
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值