标签: jtextpane

Java JTextPane 更改所选文本的字体

我有一个 JTextPane (或 JEditorPane,我可以使用任何一个都没有问题)。如何将选定区域的字体更改为特定字体?

textpane.getSelectedText().setFont()行不通的。(即使使用字体系列)

java jtextpane

4
推荐指数
1
解决办法
9774
查看次数

将 JButton 添加到 JTextPane

我在尝试将 JButton 添加到带有字符串的 JTextPane 时遇到问题。所以我想要做的是在 for 循环中添加每个字符串,然后在添加的字符串之后添加广告 JButton。下面的代码是我想要完成的。

ArrayLst<String> data = new ArrayList();
data.add("Data here");
data.add("Data here 2");
data.add("Data here 3");
data.add("Data here 4");

Container cp = getContentPane();

JTextPane pane = new JTextPane();
SimpleAttributeSet set = new SimpleAttributeSet();
StyleConstants.setBold(set, true);
pane.setBackground(Color.BLUE);
pane.setEditable(false);

Document doc = pane.getStyledDocument();

for(int i=0; i<data.size(); i++)
{
    doc.insertString(doc.getLength(), data.get(i)+ "\n", set);
    pane.insertComponent(new JButton("View Info"));
}
Run Code Online (Sandbox Code Playgroud)

谁能告诉我如何将 JButton 添加到同一行上的每个字符串?

非常感谢

java swing jtextpane jbutton

4
推荐指数
1
解决办法
2258
查看次数

JTextPane 换行行为

最近我一直在做一个Java文本编辑器项目,我想用aJTextPane代替旧的JTextArea以实现语法高亮。但是, aJTextPane中缺少方法JTextArea(例如append()getLineStartOffset()),我想在我的类MyTextPane( 的子类JTextPane)中重新实现它们,但遇到了麻烦。

我当前的代码(只有一小部分独立部分):

import java.awt.*;
import javax.swing.*;
import javax.swing.text.*;

public class MyTextPane extends JTextPane
{
    public MyTextPane()
    {
        super();
    }

    public void append(String text)
    {
        try
        {
            Document doc = this.getDocument();
            doc.insertString(doc.getLength(),text,null);
        }
        catch (BadLocationException ex)
        {
            //must succeed
            throw new InternalError(ex.getMessage());
        }
    }

    public void insert(String text, int pos)
    {
        try
        {
            this.getStyledDocument().insertString(pos,text,null);
        }
        catch (BadLocationException ex)
        {
            throw new IllegalArgumentException(ex);
        } …
Run Code Online (Sandbox Code Playgroud)

java swing jtextpane jtextarea word-wrap

4
推荐指数
1
解决办法
2798
查看次数

如何在 JTextArea 或 JTextPane 中显示多个插入符

我想使用 JTextArea 或 JTextPane 作为代码更改播放器,并将代码更改和插入符号移动记录在文本文件中。但问题是,它是从支持多选的编辑器中记录的,因此一次会有多个插入符位置。

是否可以在 JTextArea 或 JTextPane 中显示多个插入符?

我尝试使用 JTextPane 并将代码呈现为 HTML,并<span class='caret'>|</span>在代码中插入一些来表示插入符号,它可以工作,但假插入符号占用空间,因此当插入符号更改时,正常字符不会固定在屏幕上。

java swing jtextpane caret jtextarea

4
推荐指数
1
解决办法
642
查看次数

HTML JTextPane换行支持

我正在使用JTextPane来编辑HTML.当我在GUI组件中输入换行符并在JTextPane上调用getText()时,我得到一个带换行符的字符串.如果我然后创建一个新的JTextPane并传入相同的文本,则忽略换行符.

为什么在输入换行符时JTextPane不插入<br>标签?这有一个很好的解决方法吗?

    JTextPane test = new JTextPane();
    test.setPreferredSize(new Dimension(300, 300));
    test.setContentType("text/html");
    test.setText("Try entering some newline characters.");
    JOptionPane.showMessageDialog(null, test);
    String testText = test.getText();
    System.out.println("Got text: " + testText);
    // try again
    test.setText(testText);
    JOptionPane.showMessageDialog(null, test);
    testText = test.getText();
    System.out.println("Got text: " + testText);        
Run Code Online (Sandbox Code Playgroud)

样本输出:

<html>
  <head>

  </head>
  <body>
    Try entering some newline characters.
What gives?
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

我意识到我可以在调用setText之前将换行符转换为HTML换行符,但这也会在HTML和BODY标记之后转换换行符,并且看起来很愚蠢.

java swing jtextpane

3
推荐指数
1
解决办法
7776
查看次数

JTextPane中的背景图片

如何将背景图像设置为JTextPane - 某种水印.

我尝试了这个选项 - 创建一个JTextPane的子类,并使用paint方法绘制图像.但随后文本显示在图像"下方"而不是上方.

有没有"标准"或"众所周知"的方法来做到这一点?

(顺便说一下,我尝试过(傻傻的东西?)使内容类型为"text/html",并将图像设置为a的背景图像,<div>但它没有帮助.)

java swing jtextpane

3
推荐指数
1
解决办法
5753
查看次数

默认情况下,如何在JTextPane中将内容滚动到底部?

我的窗口上有JTextPane,我有JTextField。当我在JTextField中按Enter键时,文本将添加到JTextPane中。一切正常,滚动条也单独显示。但是,它显示不正确。它会自动滚动到JTextPane中内容的开头。如何将滚动条保持在JTextPane的末尾?

java swing scroll jtextpane

3
推荐指数
1
解决办法
9557
查看次数

如何修改JTextPane中的字母间距?

我需要在JTextPane中修改字母间距(字体跟踪),我无法让它工作.

当我使用JTextArea时,我可以这样做:

Font font = new Font("Courier New", Font.PLAIN, 10);
HashMap <TextAttribute, Object> attrs = new HashMap<TextAttribute, Object>();
attrs.put(TextAttribute.TRACKING, -0.1);
font = font.deriveFont(attrs);
textArea.setFont(font);
Run Code Online (Sandbox Code Playgroud)

但由于我需要更改行间距,我需要使用JTextPane,并执行:

textPane.setFont(font)
Run Code Online (Sandbox Code Playgroud)

正如我在JTextArea中所做的那样不起作用.我试过的另一件事是:

MutableAttributeSet set = new SimpleAttributeSet();
StyleConstants.setLineSpacing(set, -0.2);
StyleConstants.setFontFamily(set,"Courier New");
StyleConstants.setFontSize(set, 10);
set.addAttribute(TextAttribute.TRACKING, -0.1);
ta.setParagraphAttributes(set, true);
Run Code Online (Sandbox Code Playgroud)

但跟踪属性不起作用.

我究竟做错了什么?

java fonts swing jtextpane letter-spacing

3
推荐指数
1
解决办法
3368
查看次数

JTextPane删除第一行

我得到的Document对象JTextPane,包含方法remove,但具体的字符数textPane.getDocument().remove(begin,end).我想删除整个第一行.

java swing jtextpane

3
推荐指数
2
解决办法
5490
查看次数

Netbeans中jtextpane中的行号

我正在使用Netbeans 7.1.在jtextpane中有没有显示行号的选项?

java swing jtextpane line-numbers netbeans-7

3
推荐指数
1
解决办法
2355
查看次数