java_GUI_exercise1

设计一个简单的QQ聊天界面,这里主要考察JTextArea多行文本域和JScrollPane滚动窗格的搭配使用;观察整个界面,分为上下两部分:
1)添加上部组件,先是JPanel面板,接着在其上分别是2个搭配了JScrollPane的JTextArea多行文本域,并通过分频器来进行拆分,具体设置代码见下;
2)下部组件:新添加JPanel面板,并添加JComboBox和JButton组件,以FlowLayout流式布局的FlowLayout.RIGHT分布;

为JPanel面板和JFrame窗体设置布局,并为JFrame设置窗体。这里,出错的地方是,JFrame窗体的图标设置,,,,最终通过以下方式正确运行:

BufferedImage image = null;
try{
	image = ImageIO.read(this.getClass().getResource("./qq.jpg"));
}catch(IOException e){
	e.printStackTrace();
}

注意这里的qq.jpg与.java放在同一个目录下。
在这里插入图片描述

package java_tests;

import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.*;

public class Swing_exercise1 extends JFrame{ //继承JFrame顶层框架
	//定义组件
	//上部组件
	JPanel jp1; //定义面板
	JSplitPane jsp; //定义拆分窗格
	JTextArea jta1; //定义文本域
	JScrollPane jspane1; //定义滚动窗格
	JTextArea jta2;
	JScrollPane jspane2;
	//下部组件
	JPanel jp2;
	JButton jb1,jb2; //定义按钮
	
	JComboBox<String> jcb1; //定义下拉框
	
	public static void main(String[] args) {
		new Swing_exercise1();
	}
	public Swing_exercise1() {
		//创建组件
		//上部组件
		jp1 = new JPanel(); //创建面板
		jta1 = new JTextArea(); //创建多行文本框
		jspane1 = new JScrollPane(jta1); //创建滚动窗格 是与多行文本域搭配使用
		jta2 = new JTextArea();
		jta2.setLineWrap(true);
		jspane2 = new JScrollPane(jta2);
		jsp =  new JSplitPane(JSplitPane.VERTICAL_SPLIT,jspane1,jspane2); //创建拆分窗格
		jsp.setDividerLocation(200); //设置拆分窗格分频器初始位置
		jsp.setDividerSize(1); //设置分频器大小
		
		//下部组件
		jp2 = new JPanel();
		jb1 = new JButton("返回"); //创建按钮
		jb2 = new JButton("发送");
		String[] name = {"周卫国","白子画","陆雪琪","金正恩","本·拉登"};
		jcb1 = new JComboBox<String>(name); //创建下拉框
		
		
		//设置布局管理
		jp1.setLayout(new BorderLayout()); //设置面板布局
		jp2.setLayout(new FlowLayout(FlowLayout.RIGHT));
		
		//添加组件
		jp1.add(jsp);
		jp2.add(jcb1);
		jp2.add(jb1);
		jp2.add(jb2);
		
		this.add(jp1,BorderLayout.CENTER);
		this.add(jp2,BorderLayout.SOUTH);
		
		//设置窗体
		this.setTitle("聊天界面");
		//这步失败
		BufferedImage image = null;
		try {
			image = ImageIO.read(this.getClass().getResource("./qq.jpg"));
		}catch(IOException e) {
			e.printStackTrace();
		}
		this.setIconImage(image);
		//this.setIconImage(new ImageIcon("java_tests/qq.jpg").getImage()); //设置标题图片
		this.setSize(400,350); //设置界面像素
		this.setLocation(200, 200); //设置界面初始位置
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置虚拟机和界面一同关闭
		this.setVisible(true); //设置界面可视化
	}
}

这里考察:
setLineWrap(boolean wrap) ; //设置多行文本区域自动换行
setEditable(boolean wrap); //设置文本框是否可以编辑

总结:

多行文本框可以与滚动窗格连用。

多行文本框可以设置自动换行。

发布了28 篇原创文章 · 获赞 3 · 访问量 939

猜你喜欢

转载自blog.csdn.net/weixin_43273005/article/details/100711034
今日推荐