使用java中的swing插件生成模拟界面,如何自适应屏幕?求大神
package demo;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.SystemColor;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;
import java.awt.BorderLayout;
import javax.swing.border.EmptyBorder;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import javax.swing.border.LineBorder;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import org.eclipse.ui.internal.handlers.WizardHandler.New;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.UIManager;
import javax.swing.SwingConstants;
import java.awt.TextField;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JTextArea;
import java.awt.Panel;
public class tool extends JFrame{
private JFrame frame;
private JPanel contentPane;
private JTextField xmlFilePath;
private JTextField documentFilePath;
private JTextField dtPacketFilePath;
private JTextField textField;
private JTextField dataSizeText;
private JTextField dataFrame;
private JTextField rtDataFilePath;
private JTextField rtDataProperties;
private JTextField logText;
private JTextField receiveFilePath;
private JTextField topicText;
private JTextField loadFilePath;
private JTextField topicTextAchieve;
private JTextArea logData;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
tool frame = new tool();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public tool() {
setTitle("数据传输测试工具");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 1293, 1000);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
//左侧发送数据面板
JPanel leftPanel = new JPanel();
leftPanel.setForeground(SystemColor.windowText);
leftPanel.setBorder(new LineBorder(new Color(153, 180, 209)));
leftPanel.setBounds(14, 13, 659, 927);
contentPane.add(leftPanel);
leftPanel.setLayout(null);
// 左边标题文本
JTextPane leftTextPane = new JTextPane();
leftTextPane.setEditable(false);
leftTextPane.setFont(new Font("宋体", Font.PLAIN, 18));
leftTextPane.setBackground(SystemColor.activeCaption);
leftTextPane.setBounds(187, 13, 113, 27);
leftPanel.add(leftTextPane);
leftTextPane.setText("数据发送端");
//消息内容
JTextPane xmlDataText = new JTextPane();
xmlDataText.setEditable(false);
xmlDataText.setBackground(Color.LIGHT_GRAY);
xmlDataText.setText("消息发送:");
xmlDataText.setBounds(14, 59, 82, 24);
leftPanel.add(xmlDataText);
//左侧消息数据区子面板
JPanel leftXmlPanel = new JPanel();
leftXmlPanel.setBorder(new LineBorder(SystemColor.windowText));
leftXmlPanel.setBounds(14, 96, 619, 99);
leftPanel.add(leftXmlPanel);
leftXmlPanel.setLayout(null);
//消息XML文本内容
JTextPane xmlText = new JTextPane();
xmlText.setEditable(false);
xmlText.setBackground(SystemColor.activeCaptionBorder);
xmlText.setText(" XML:");
xmlText.setBounds(23, 33, 53, 24);
leftXmlPanel.add(xmlText);
//消息文件选择路径显示区
xmlFilePath = new JTextField();
xmlFilePath.setBackground(SystemColor.text);
xmlFilePath.setBounds(90, 33, 288, 24);
leftXmlPanel.add(xmlFilePath);
xmlFilePath.setColumns(10);
//消息文件选择按钮
JButton xmlSelectButton = new JButton("...");
JFileChooser fileChooser = new JFileChooser("c:\\");
xmlSelectButton.setBackground(UIManager.getColor("Button.disabledForeground"));
xmlSelectButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
File selectFile = null;
// 打开路径选择文件
int a = fileChooser.showSaveDialog(null);
if(a == fileChooser.APPROVE_OPTION){
selectFile = fileChooser.getSelectedFile();
xmlFilePath.setText(selectFile.getPath());
}
}
});
xmlSelectButton.setBounds(406, 27, 71, 37);
leftXmlPanel.add(xmlSelectButton);
SimpleDateFormat smp = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
//消息文件发送按钮
JButton xmlSend = new JButton("发送");
xmlSend.setForeground(SystemColor.windowText);
xmlSend.setBackground(UIManager.getColor("Button.disabledForeground"));
xmlSend.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 获取客户填写的服务端IP及端口
String selectXmlFile = xmlFilePath.getText().trim();
if (selectXmlFile.equals("")) {
JOptionPane.showMessageDialog(null, "请填写所有需要的信息!");
}
else {
// 调用辜锐后端函数,将信息传给后端。
logData.append(smp.format(new Date())+" "+"开始向【"+"192.168.0.101"+"】发送数据"+"\r\n");
long bef =6;
logData.append(smp.format(new Date())+" "+"【"+"192.168.0.101"+"】接收到数据"+"\r\n");
long aft =7;
logData.append(smp.format(new Date())+" "+"发送耗时(s):"+(aft-bef)+"\r\n");
logData.append("文件大小:5Mb");
logData.append("文件存储地址:c:\\数据流.xml");
}
}
});
xmlSend.setBounds(504, 27, 71, 37);
leftXmlPanel.add(xmlSend);
//文件文本内容
JTextPane documentText = new JTextPane();
documentText.setEditable(false);
documentText.setBackground(SystemColor.activeCaptionBorder);
documentText.setText("文件发送:");
documentText.setBounds(14, 208, 90, 27);
leftPanel.add(documentText);
//左侧文件数据区子面板
JPanel leftDocumentPanel = new JPanel();
leftDocumentPanel.setBorder(new LineBorder(SystemColor.windowText));
leftDocumentPanel.setBounds(14, 248, 619, 88);
leftPanel.add(leftDocumentPanel);
leftDocumentPanel.setLayout(null);
//文件指示文本内容
JTextPane propertiesText = new JTextPane();
propertiesText.setEditable(false);
propertiesText.setBackground(SystemColor.activeCaptionBorder);
propertiesText.setText(" 文件:");
propertiesText.setBounds(28, 35, 52, 24);
leftDocumentPanel.add(propertiesText);
//文件选择路径显示区
documentFilePath = new JTextField();
documentFilePath.setBackground(SystemColor.text);
documentFilePath.setBounds(94, 35, 283, 24);
leftDocumentPanel.add(documentFilePath);
documentFilePath.setColumns(10);
//文件选择按钮
JButton documentSelectButton = new JButton("...");
documentSelectButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
File selectFile = null;
// 打开路径选择文件
int a = fileChooser.showSaveDialog(null);
if(a == fileChooser.APPROVE_OPTION){
selectFile = fileChooser.getSelectedFile();
documentFilePath .setText(selectFile.getPath());
}
}
});
documentSelectButton.setForeground(SystemColor.windowText);
documentSelectButton.setBackground(UIManager.getColor("Button.disabledForeground"));
documentSelectButton.setBounds(404, 30, 71, 34);
leftDocumentPanel.add(documentSelectButton);
//文件发送按钮
JButton documentSend = new JButton("发送");
documentSend.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 获取客户填写的服务端IP及端口
String selectDocumentFile = documentFilePath.getText().trim();
if (selectDocumentFile.equals("")) {
JOptionPane.showMessageDialog(null, "请填写所有需要的信息!");
}
else {
// 调用辜锐后端函数,将信息传给后端。
logData.append(smp.format(new Date())+" "+"开始向【"+"192.168.0.101"+"】发送数据"+"\r\n");
long bef =6;
logData.append(smp.format(new Date())+" "+"【"+"192.168.0.101"+"】接收到数据"+"\r\n");
long aft =7;
logData.append(smp.format(new Date())+" "+"发送耗时(s):"+(aft-bef)+"\r\n");
logData.append("文件大小:5Mb");
logData.append("文件存储地址:c:\\数据流.xml");
}
}
});
documentSend.setBackground(UIManager.getColor("Button.disabledForeground"));
documentSend.setBounds(501, 30, 71, 34);
leftDocumentPanel.add(documentSend);
//数据包文本内容
JTextPane dataPacket = new JTextPane();
dataPacket.setEditable(false);
dataPacket.setBackground(SystemColor.activeCaptionBorder);
dataPacket.setText("数据包发送:");
dataPacket.setBounds(14, 349, 113, 24);
leftPanel.add(dataPacket);
//左侧数据包区子面板
JPanel leftDtpacketPanel = new JPanel();
leftDtpacketPanel.setBorder(new LineBorder(new Color(0, 0, 0)));
leftDtpacketPanel.setBounds(14, 386, 619, 177);
leftPanel.add(leftDtpacketPanel);
leftDtpacketPanel.setLayout(null);
//数据包XML文本内容
JTextPane txtpnXml = new JTextPane();
txtpnXml.setBackground(SystemColor.activeCaptionBorder);
txtpnXml.setText("XML属性:");
txtpnXml.setBounds(14, 37, 71, 24);
leftDtpacketPanel.add(txtpnXml);
//数据包选择路径显示区
dtPacketFilePath = new JTextField();
dtPacketFilePath.setBackground(SystemColor.text);
dtPacketFilePath.setBounds(94, 37, 279, 24);
leftDtpacketPanel.add(dtPacketFilePath);
dtPacketFilePath.setColumns(10);
//数据包选择按钮
JButton dtPacketSelectButton = new JButton("....");
dtPacketSelectButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
File selectFile = null;
// 打开路径选择文件
int a = fileChooser.showSaveDialog(null);
if(a == fileChooser.APPROVE_OPTION){
selectFile = fileChooser.getSelectedFile();
dtPacketFilePath .setText(selectFile.getPath());
}
}
});
dtPacketSelectButton.setBackground(UIManager.getColor("Button.disabledForeground"));
dtPacketSelectButton.setBounds(402, 33, 69, 32);
leftDtpacketPanel.add(dtPacketSelectButton);
//数据包发送按钮
JButton daPackSend = new JButton("发送");
daPackSend.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String selectPacketData = dataFrame.getText();
String selectDtPacketFile = dtPacketFilePath.getText().trim();
String selectLoadFile = loadFilePath.getText().trim();
if (selectDtPacketFile.equals("") || selectLoadFile.equals("") || selectLoadFile.equals("")) {
JOptionPane.showMessageDialog(null, "请填写所有需要的信息!");
}
else {
// 调用辜锐后端函数,将信息传给后端。
}
}
});
daPackSend.setBackground(UIManager.getColor("Button.disabledForeground"));
daPackSend.setBounds(501, 33, 69, 32);
leftDtpacketPanel.add(daPackSend);
//数据包文件文本内容
JTextPane loadDataText = new JTextPane();
loadDataText.setEditable(false);
loadDataText.setBackground(SystemColor.activeCaptionBorder);
loadDataText.setText(" 文件:");
loadDataText.setBounds(14, 92, 69, 24);
leftDtpacketPanel.add(loadDataText);
//数据包文件路径显示区
loadFilePath = new JTextField();
loadFilePath.setBounds(94, 92, 279, 24);
leftDtpacketPanel.add(loadFilePath);
loadFilePath.setColumns(10);
//数据包文件选择按钮
JButton loadSelectButton = new JButton("...");
loadSelectButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
File selectFile = null;
// 打开路径选择文件
int a = fileChooser.showSaveDialog(null);
if(a == fileChooser.APPROVE_OPTION){
selectFile = fileChooser.getSelectedFile();
loadFilePath.setText(selectFile.getPath());
}
}
});
loadSelectButton.setBackground(UIManager.getColor("Button.disabledForeground"));
loadSelectButton.setBounds(402, 92, 69, 32);
leftDtpacketPanel.add(loadSelectButton);
//数据包大小文本内容
dataSizeText = new JTextField();
dataSizeText.setBackground(Color.LIGHT_GRAY);
dataSizeText.setEditable(false);
dataSizeText.setText(" 数据包大小:");
dataSizeText.setBounds(14, 129, 100, 24);
leftDtpacketPanel.add(dataSizeText);
dataSizeText.setColumns(10);
//数据包大小输入区
dataFrame = new JTextField();
dataFrame.setBackground(SystemColor.text);
dataFrame.setHorizontalAlignment(SwingConstants.CENTER);
dataFrame.setText("10");
dataFrame.setBounds(128, 129, 55, 24);
leftDtpacketPanel.add(dataFrame);
dataFrame.setColumns(10);
//数据包大小分包单位
JTextPane companyText = new JTextPane();
companyText.setText("MB/包");
companyText.setBounds(197, 129, 55, 24);
leftDtpacketPanel.add(companyText);
//实时数据文本内容
JTextPane realTimeDataText = new JTextPane();
realTimeDataText.setEditable(false);
realTimeDataText.setBackground(SystemColor.activeCaptionBorder);
realTimeDataText.setText("实时数据发布:");
realTimeDataText.setBounds(14, 576, 113, 24);
leftPanel.add(realTimeDataText);
//左侧实时数据区子面板
JPanel leftRtDataPanel = new JPanel();
leftRtDataPanel.setBorder(new LineBorder(SystemColor.windowText));
leftRtDataPanel.setBounds(14, 613, 619, 88);
leftPanel.add(leftRtDataPanel);
leftRtDataPanel.setLayout(null);
//实时数据发布XML文本内容
JTextPane txtpnXml_1 = new JTextPane();
txtpnXml_1.setEditable(false);
txtpnXml_1.setBackground(SystemColor.activeCaptionBorder);
txtpnXml_1.setText("XML属性:");
txtpnXml_1.setBounds(14, 13, 83, 24);
leftRtDataPanel.add(txtpnXml_1);
//实时数据选择路径显示区
rtDataFilePath = new JTextField();
rtDataFilePath.setBackground(SystemColor.text);
rtDataFilePath.setBounds(108, 13, 259, 24);
leftRtDataPanel.add(rtDataFilePath);
rtDataFilePath.setColumns(10);
//实时数据选择按钮
JButton rtDataSelectButton = new JButton("...");
rtDataSelectButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
File selectFile = null;
// 打开路径选择文件
int a = fileChooser.showSaveDialog(null);
if(a == fileChooser.APPROVE_OPTION){
selectFile = fileChooser.getSelectedFile();
loadFilePath.setText(selectFile.getPath());
}
}
});
rtDataSelectButton.setBackground(UIManager.getColor("Button.disabledForeground"));
rtDataSelectButton.setBounds(404, 12, 66, 27);
leftRtDataPanel.add(rtDataSelectButton);
//实时数据文件文本描述
JTextPane textPane = new JTextPane();
textPane.setEditable(false);
textPane.setBackground(SystemColor.activeCaptionBorder);
textPane.setText(" 文件:");
textPane.setBounds(14, 51, 83, 24);
leftRtDataPanel.add(textPane);
//实时数据文件路径显示区
rtDataProperties = new JTextField();
rtDataProperties.setBackground(SystemColor.text);
rtDataProperties.setBounds(108, 51, 259, 24);
leftRtDataPanel.add(rtDataProperties);
rtDataProperties.setColumns(10);
//实时数据属性路径选择按钮
JButton attributeSelectButton = new JButton("...");
attributeSelectButton.setBackground(UIManager.getColor("Button.disabledForeground"));
attributeSelectButton.setBounds(404, 48, 63, 27);
leftRtDataPanel.add(attributeSelectButton);
//实时数据发布按钮
JButton releaseSelectButton = new JButton("发布");
releaseSelectButton.setBackground(UIManager.getColor("Button.disabledForeground"));
releaseSelectButton.setBounds(495, 29, 73, 35);
leftRtDataPanel.add(releaseSelectButton);
//运行日志文本内容
logText = new JTextField();
logText.setBackground(SystemColor.activeCaptionBorder);
logText.setEditable(false);
logText.setText("执行结果日志:");
logText.setBounds(14, 714, 113, 24);
leftPanel.add(logText);
logText.setColumns(10);
//执行结果日志数据
logData = new JTextArea();
logData.setEditable(true);
logData.setLineWrap(true);
//滚动条
JScrollPane sendLogScrollPanel =new JScrollPane(logData);
sendLogScrollPanel.setBounds(14,751,619,163);
leftPanel.add(sendLogScrollPanel);
logData.setColumns(10);
logData.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void removeUpdate(DocumentEvent e) {
// TODO Auto-generated method stub
}
@Override
public void insertUpdate(DocumentEvent e) {
// TODO Auto-generated method stub
logData.setCaretPosition(logData.getText().length());
}
@Override
public void changedUpdate(DocumentEvent e) {
// TODO Auto-generated method stub
}
});
//右边区域
JPanel rightPanel = new JPanel();
rightPanel.setForeground(SystemColor.windowText);
rightPanel.setBorder(new LineBorder(new Color(153, 180, 209)));
rightPanel.setBounds(722, 13, 539, 927);
contentPane.add(rightPanel);
rightPanel.setLayout(null);
// 右边标题文本
JTextPane rightTextPane = new JTextPane();
rightTextPane.setEditable(false);
rightTextPane.setFont(new Font("宋体", Font.PLAIN, 18));
rightTextPane.setBackground(SystemColor.activeCaption);
rightTextPane.setBounds(213, 13, 105, 27);
rightTextPane.setText("数据接收端");
rightPanel.add(rightTextPane);
//接收数据文本内容
JTextPane receiveText = new JTextPane();
receiveText.setBackground(SystemColor.activeCaptionBorder);
receiveText.setText("响应文件:");
receiveText.setBounds(47, 75, 81, 24);
rightPanel.add(receiveText);
//接收数据的路径显示区
receiveFilePath = new JTextField();
receiveFilePath.setBounds(142, 75, 266, 24);
rightPanel.add(receiveFilePath);
receiveFilePath.setColumns(10);
//响应文件选择按钮
JButton receiveSelectButton = new JButton("...");
receiveSelectButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
}
});
receiveSelectButton.setBounds(433, 75, 68, 27);
rightPanel.add(receiveSelectButton);
//消息接收文本内容描述
JTextPane xmlReceiveText = new JTextPane();
xmlReceiveText.setBackground(SystemColor.activeCaptionBorder);
xmlReceiveText.setText("消息接收:");
xmlReceiveText.setBounds(14, 125, 141, 24);
rightPanel.add(xmlReceiveText);
//消息文件数据显示区
JTextArea xmlReceiveArea = new JTextArea();
xmlReceiveArea.setRows(0);
xmlReceiveArea.setEditable(true);
xmlReceiveArea.setLineWrap(true);
//滚动条
JScrollPane xmlReceiveInfo =new JScrollPane(xmlReceiveArea);
xmlReceiveInfo.setBounds(24,162,489,103);
rightPanel.add(xmlReceiveInfo);
xmlReceiveArea.setColumns(10);
xmlReceiveArea.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void removeUpdate(DocumentEvent e) {
// TODO Auto-generated method stub
}
@Override
public void insertUpdate(DocumentEvent e) {
// TODO Auto-generated method stub
xmlReceiveArea.setCaretPosition(xmlReceiveArea.getText().length());
}
@Override
public void changedUpdate(DocumentEvent e) {
// TODO Auto-generated method stub
}
});
//文件接收文本内容描述
JTextPane propertiesReceiveText = new JTextPane();
propertiesReceiveText.setBackground(SystemColor.activeCaptionBorder);
propertiesReceiveText.setText("文件接收:");
propertiesReceiveText.setBounds(14, 278, 141, 24);
rightPanel.add(propertiesReceiveText);
//文件接收数据显示区
JTextArea propertiesReceiveArea = new JTextArea();
propertiesReceiveArea.setEditable(true);
propertiesReceiveArea.setLineWrap(true);
propertiesReceiveArea.setColumns(10);
//滚动条
JScrollPane propertiesReceiveInfo =new JScrollPane(propertiesReceiveArea);
propertiesReceiveInfo.setBounds(24,315,489,103);
rightPanel.add(propertiesReceiveInfo);
propertiesReceiveArea.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void removeUpdate(DocumentEvent e) {
// TODO Auto-generated method stub
propertiesReceiveArea.setCaretPosition(propertiesReceiveArea.getText().length());
}
@Override
public void insertUpdate(DocumentEvent e) {
// TODO Auto-generated method stub
}
@Override
public void changedUpdate(DocumentEvent e) {
// TODO Auto-generated method stub
}
});
//数据包文本内容描述
JTextPane dataPacketReceiveText = new JTextPane();
dataPacketReceiveText.setBackground(SystemColor.activeCaptionBorder);
dataPacketReceiveText.setText("数据包接收:");
dataPacketReceiveText.setBounds(14, 431, 141, 24);
rightPanel.add(dataPacketReceiveText);
//数据包数据显示区
JTextArea datapacketReceiveArea = new JTextArea();
datapacketReceiveArea.setRows(0);
datapacketReceiveArea.setEditable(true);
datapacketReceiveArea.setLineWrap(true);
//滚动条
JScrollPane datapacketReceiveInfo = new JScrollPane(datapacketReceiveArea);
datapacketReceiveInfo.setBounds(24,468,489,103);
rightPanel.add(datapacketReceiveInfo);
datapacketReceiveArea.setColumns(10);
datapacketReceiveArea.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void removeUpdate(DocumentEvent e) {
// TODO Auto-generated method stub
}
@Override
public void insertUpdate(DocumentEvent e) {
// TODO Auto-generated method stub
datapacketReceiveArea.setCaretPosition(datapacketReceiveArea.getText().length());
}
@Override
public void changedUpdate(DocumentEvent e) {
// TODO Auto-generated method stub
}
});
//实时数据订阅文本内容
JTextPane textPane_1 = new JTextPane();
textPane_1.setEditable(false);
textPane_1.setBackground(SystemColor.activeCaptionBorder);
textPane_1.setText("实时数据订阅:");
textPane_1.setBounds(14, 584, 116, 24);
rightPanel.add(textPane_1);
//实时数据显示区子面板
JPanel realTimepanel = new JPanel();
realTimepanel.setBorder(new LineBorder(SystemColor.windowText));
realTimepanel.setBounds(24, 621, 489, 293);
rightPanel.add(realTimepanel);
realTimepanel.setLayout(null);
//实时数据主题号文本内容
JTextPane textPane_2 = new JTextPane();
textPane_2.setBackground(SystemColor.activeCaptionBorder);
textPane_2.setText("主题号");
textPane_2.setBounds(14, 13, 73, 24);
realTimepanel.add(textPane_2);
//主题号输入框
topicTextAchieve = new JTextField();
topicTextAchieve.setBounds(101, 13, 56, 24);
realTimepanel.add(topicTextAchieve);
topicTextAchieve.setColumns(10);
//实时数据订阅按钮
JButton subscribeButton = new JButton("订阅");
subscribeButton.setBounds(171, 12, 86, 27);
realTimepanel.add(subscribeButton);
//实时数据显示区
JTextArea rtDataShowArea = new JTextArea();
rtDataShowArea.setRows(0);
rtDataShowArea.setEditable(true);
rtDataShowArea.setLineWrap(true);
//滚动条
JScrollPane rtDataInfo = new JScrollPane(rtDataShowArea);
rtDataInfo.setBounds(13,51,471,218);
realTimepanel.add(rtDataInfo);
rtDataShowArea.setColumns(10);
rtDataShowArea.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void removeUpdate(DocumentEvent e) {
// TODO Auto-generated method stub
}
@Override
public void insertUpdate(DocumentEvent e) {
// TODO Auto-generated method stub
rtDataShowArea.setCaretPosition(rtDataShowArea.getText().length());
}
@Override
public void changedUpdate(DocumentEvent e) {
// TODO Auto-generated method stub
}
});
}
}