Java 将一些单词作为块添加到JTextarea
我们希望将Java 将一些单词作为块添加到JTextarea,java,swing,custom-component,jtextarea,Java,Swing,Custom Component,Jtextarea,我们希望将JComboBox中的一些单词添加到JTextArea中,但我们希望这些单词作为块 我的意思是,当用户试图从这个区块中删除一封信时,整个区块都将被删除 例如: 让块字为“Title”,那么当我们在JTextArea中有这个块时,我们将它作为一个字母处理 我们如何才能做到这一点?如评论中所述,您可以使用JTextPane向文本区域添加组件。然后它总是被当作一个完整的词。下面是一个例子: import java.awt.*; import java.awt.event.*; import
JComboBox
中的一些单词添加到JTextArea
中,但我们希望这些单词作为块
我的意思是,当用户试图从这个区块中删除一封信时,整个区块都将被删除
例如:
让块字为“Title”,那么当我们在JTextArea
中有这个块时,我们将它作为一个字母处理
我们如何才能做到这一点?如评论中所述,您可以使用
JTextPane
向文本区域添加组件。然后它总是被当作一个完整的词。下面是一个例子:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class TextComponent extends Box{
public TextComponent(){
super(BoxLayout.Y_AXIS);
final JTextPane textArea = new JTextPane();
textArea.setAlignmentX(CENTER_ALIGNMENT);
add(textArea);
JButton addText = new JButton("Add Text");
addText.setAlignmentX(CENTER_ALIGNMENT);
addText.addActionListener(new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
JLabel text = new JLabel("Original Text");
text.setAlignmentY(0.8f);
text.setOpaque(true);
text.setBackground(Color.yellow);
textArea.insertComponent(text);
}});
add(addText);
}
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setContentPane(new TextComponent());
frame.pack();
frame.setVisible(true);
}
}
您或许可以将customEditorKit附加到如下位置:
1。扩展EditorKit
并覆盖ViewFactory
以返回CustomViewFactory的实例
2.重写CustomViewFactory
中的create
方法,该方法实现ViewFactory
并返回
BoxView、ComponentView、IconView(如果要添加一些图标+文本)等
获取JTextArea
的文档并添加DocumentFilter
。检查事件偏移量是否在块文本中,并跳过事件(删除或插入)可能不在JTextArea中,请尝试JTextPane或类似的方法。