package JTextPane;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;
import javax.swing.text.BadLocationException;
import javax.swing.text.Style;
import javax.swing.text.StyleConstants;
/**
* @version 1.0
* @author 刘胜军
*/
public class Test extends JFrame {
private static final long serialVersionUID = 1L;
/** 定义一个历史面板,用于显示已经发送的文字 */
private JTextPane _old = new JTextPane();
/** 定义一个输入面板,用于显示正在输入的内容 */
private JTextPane _new = new JTextPane();
/** 声明三组样式,具体的在方法public static void styleInit() {}中定义 */
private Style style1 = null;
private Style style2 = null;
private Style style3 = null;
/** 下拉列表,用于选择样式 */
private JComboBox<String> box = new JComboBox<String>();
/** 发送按钮,用于将消息提交到历史面板 */
private JButton send = new JButton("提交");
public static void main(String[] args) {
new Test();
}
/**
* 构造方法,需要完成所以初始化操作 鼠标放在方法名上,可以显示其内容
*/
public Test() {
styleInit();
init();
}
/** 样式初始化 */
public void styleInit() {
Style style = _new.getStyledDocument().addStyle(null, null);// 获取组件空样式,addStyle(null,
// null)会返回一个空样式
StyleConstants.setFontFamily(style, "楷体");// 为style样式设置字体属性
StyleConstants.setFontSize(style, 18);// 为style样式设置字体大小
Style normal = _new.addStyle("normal", style);// 将style样式添加到组件,并命名为normal,返回一个样式由Style
// normal变量接收
/** 这个时候,组件编辑器关联的模型中就添加了一个样式normal,这个样式是最基本的一个样式,其他样式可以根据他进行修改 */
style1 = _new.addStyle("style1", normal);// 基于normal样式,在添加三次,分别命名为style1,style2,style3
style2 = _new.addStyle("style2", normal);// 此时,style1,style2,style3三个样式和normal样式是一模一样的
style3 = _new.addStyle("style3", normal);// 如果修改,可以对每个变量单独修改,具体修改方式如下
StyleConstants.setForeground(style1, Color.GREEN);// 将style1的颜色设置为绿色
StyleConstants.setForeground(style2, Color.RED);// 将style2的颜色设置为红色
StyleConstants.setForeground(style3, Color.BLACK);// 将style3的颜色设置为黑色
StyleConstants.setFontSize(style3, 14);// 将style3的大小设置为14
}
/** 初始化布局 */
public void init() {
this.setBounds(200, 100, 420, 520);
this.setLayout(null);
this._old.setEditable(false);
// 定义滚动面板,放历史面板,以实现滚动条(有需要的时候显示)和换行
JScrollPane js_old = new JScrollPane(_old,
JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
// 设置位置大小
js_old.setBounds(0, 0, 400, 300);
// 添加到窗体
this.add(js_old);
// 定义滚动面板,放输入面板,以实现滚动条(有需要的时候显示)和换行
JScrollPane js_new = new JScrollPane(_new,
JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
// 设置位置大小
js_new.setBounds(0, 350, 400, 150);
// 添加到窗体
this.add(js_new);
this.box.addItem("style1");
this.box.addItem("style2");
this.box.addItem("style3");
this.box.setBounds(50, 315, 100, 20);
this.add(this.box);
this.send.setBounds(200, 315, 100, 20);
this.add(this.send);
this.send.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
inserMessage();
}
});
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
/** 将文字插入到历史面板,并清空输入面板 */
public void inserMessage() {
try {
/** 判断下拉列表内容,确定使用哪种样式 */
Style style = (box.getSelectedItem().equals("style1")) ? style1
: (box.getSelectedItem().equals("style2")) ? style2
: style3;
/**
* 获取历史面板的insertString方法,将文字追加到历史面板上
*
* void insertString(int offset, String str, AttributeSet a) throws
* BadLocationException offset - 要插入内容的偏移量,该值 >=
* 0。跟踪给定的位置或其后位置的更改的所有位置都将移动。 str - 要插入的字符串 a -
* 要与插入的内容关联的属性。如果没有属性,它可能为 null。
*
* this._old.getStyledDocument().getLength()这一句是获取当前面板内容的总长度,
* 作为要插入内容的偏移量 this._new.getText()+"\n"这一句是获取输入面板内容 style这一句是使用的样式
*/
this._old.getStyledDocument().insertString(
this._old.getStyledDocument().getLength(),
this._new.getText() + "\n", style);
/** 将输入面板置空 */
this._new.setText(null);
} catch (BadLocationException e) {
e.printStackTrace();
}
}
}
- 大小: 9.6 KB
分享到:
相关推荐
改变文本域textarea里的字体颜色的方法
文本域动态添加图像HTML html 文本域 文本域添加图像 图像 高老师 北大青鸟
通过脚本更改文本域的显示值而不是改变实际的录入值,虽然通过使用脚本在文本域前面添加了币符号,看上去发生了更改,但实际上文本域的录入值并没有被改变,仅仅是在显示上被更改了。而无需改变实际的文本域录入值,...
按send按钮后,单选框、复选框的所选内容,在文本域显示
javascript 文本域字数限制,红色文字显示超过的字数
jquery tag插件input文本域输入文字创建标签文字效果
当数字或者英文中带有汉字时,会从汉字处换行,而纯汉字却可以自动换行。这个问题如何解决?先来认识一下两位主角word-wrap和word-break word-wrap用来控制换行
老本版的文本域组件,建议下载ckeditor,实现起来更简单
自己做的文本框字数统计/限制插件 输入框 或者 文本域 动态显示还剩余可输入字数
NULL 博文链接:https://lshj.iteye.com/blog/2246339
这是一个js验证文本域,通过javaScript的验证是文本域输入有了保证。
自增长的文本域 随着用户输入的字符增加文本域和长度
textarea元素在chrome等浏览器下可以被拖拉从而改变大小,对于查看textarea里面的内容来说相当方便,但是有时候,我们为了保持网页的美观,不得不想要禁掉这个功能,禁止用户随意拉动textarea的大小
设置字体颜色 设置表单域颜色 组件方法调用: addTempl(String templKey,String templFileName),注册一个模板文件; addText(String templKey,String key,String text), 向模板中一个表单域添加一个文本数据; ...
编写一个对输入的英文单词按照字典排序的程序,界面如图,当在一个文本域输入若干个英文字单词,单击字典排序按钮,另一个文本域 对输入的英文单词进行排序;当按清空按钮,另一个文本区域的内容同时清空。要求通过...
C#使用itextsharp实现文本域填充,版本iTextSharp.5.5.13
在做发表评论时候,下面显示的可输入字数随着文本域输入字数的变化而变化。每输入一个字,下面还可以输入字数减少1。把本文档后缀改为.html即可看到效果。
自成一体的文本编辑器,上传文件和图片与站点无关,简单实用、安全
在 Acrobat DC 中关于 JavaScript文本域的值和外观的区别以及如何在表单中对文本域按键事件的操作是用户在文本域中录入内容时,可以对录入内容进行筛选和替换等操作,而这些更改发生在提交数据之前,实际上是更改了...