设计一个简单的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); //设置文本框是否可以编辑
总结:
多行文本框可以与滚动窗格连用。
多行文本框可以设置自动换行。