标签: jtextpane

将工具提示添加到JTextPane

我想在JTextPane中只添加一些工具提示.例如,如果JTextPane中有引用链接文本,我想在该文本中添加工具提示以显示链接.有什么方法可以实现这个功能吗?

java jtextpane tooltip

10
推荐指数
2
解决办法
3053
查看次数

JTextPane的等宽字体/符号

我想使用JTextPane构建类似控制台的输出.因此我使用的是等宽字体:

textpane.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 12));
Run Code Online (Sandbox Code Playgroud)

这适用于所有类型的alphanum(如az,0-9等)字符,但当涉及' \ u2588 '(█)等符号时,字体不再是等宽字体.

我忘记了什么吗?或者是不是有一个包含smybols的等宽字体?

java unicode symbols jtextpane monospace

10
推荐指数
1
解决办法
2万
查看次数

获取'尝试改变通知'例外

我的目标是实现用户写入JTextPane的关键字的蓝色着色.这就是我的代码的样子:

private class DocumentHandler implements DocumentListener {

        @Override
        public void changedUpdate(DocumentEvent ev) {
        }

        @Override
        public void insertUpdate(DocumentEvent ev) {
            highlight();
        }

        @Override
        public void removeUpdate(DocumentEvent ev) {
            highlight();
        }

        private void highlight() {
            String code = codePane.getText();
            SimpleAttributeSet defSet = new SimpleAttributeSet();
            StyleConstants.setForeground(defSet, Color.BLACK);
            doc.setCharacterAttributes(0, code.length(), defSet, true);
            SimpleAttributeSet set = new SimpleAttributeSet();
            StyleConstants.setForeground(set, Color.BLUE);
            for (String keyword : keywords) {
                Pattern pattern = Pattern.compile(keyword + "(\\[\\])*");
                Matcher matcher = pattern.matcher(code);
                while (matcher.find()) {

                    //Just for test
                    System.out.print("Start index: …
Run Code Online (Sandbox Code Playgroud)

java swing jtextpane

10
推荐指数
1
解决办法
1万
查看次数

JEdi​​torpane与JTextPane

我必须为我的大学创建一个java swing项目.一个java文件的编辑器,带有正确的文本突出显示,即java关键字,java注释普通文本的不同颜色和字体.
帮助我选择java提供的两个样式文本组件JEdi​​torpaneJTextPane之一,以便我可以完全满足要求.
请告诉我这两者之间的适当差异,在哪种情况下我必须使用其中一种.

java swing jtextpane jeditorpane

10
推荐指数
2
解决办法
1万
查看次数

突出显示JTextPane中的当前行

我正在尝试超过2天来实现文本编辑器窗口的特定要求...不幸的是到目前为止没有成功:(

目标是获得一个文本编辑器窗口,该窗口将突出显示当前行,就像其他文本编辑器一样.对于当前行,我指的是当前光标/插入符所在的行.

我已经找到了两种不同的方法,但不幸的是我无法采用它们,所以它们按预期工作.

第一种方法是覆盖DefaultHighlighter(http://snippets.dzone.com/posts/show/6688).在第二种方法中,HighlighterPainter将被覆盖(http://www.jroller.com/santhosh/date/20050622).

现在我正在尝试在我的项目中采用第一种方法,但正如我所说,它没有按预期工作.

在这篇文章的最后,我发布了一个小样本应用程序来演示这个问题.

  • 如果我启动程序,则将插入符号放在第一行的开头.但是,该行未突出显示.
  • 现在我输入一些字符.这些字符将突出显示,但只有那些字符不完整
  • 我点击Enter进入下一行.第一行不再突出显示正确的内容.第二行也没有突出显示,这是不正确的.再次,当我键入一些字符时,那些将是高亮显示但不是完整的行.
  • 当我现在将插入符号移回第一行时,通过向上键或鼠标单击,将突出显示完整的第一行,而不仅仅是现有的字符.这是我从一开始就想要的行为.

我希望有人能告诉我这里我做错了什么......或者解释为什么根本无法解决这个问题.如何实现线条突出显示的任何替代解决方案也非常感谢!

非常感谢Cheers Preachie

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Insets;
import java.awt.Rectangle;

import javax.swing.JFrame;
import javax.swing.JTextPane;
import javax.swing.event.CaretEvent;
import javax.swing.event.CaretListener;
import javax.swing.text.DefaultHighlighter;
import javax.swing.text.Highlighter;
import javax.swing.text.JTextComponent;

public class HighlightProblem extends JFrame {
    private static final long serialVersionUID = 1L;
    private final JTextPane textPane;
    private final Highlighter.HighlightPainter cyanPainter;

    public HighlightProblem() {
        cyanPainter = new DefaultHighlighter.DefaultHighlightPainter(Color.CYAN);

        textPane = new JTextPane();
        textPane.setPreferredSize(new …
Run Code Online (Sandbox Code Playgroud)

java swing highlighting jtextpane

9
推荐指数
1
解决办法
5664
查看次数

Java:在JTextPane上注册<ENTER>键

我正在使用具有JTextPane的java创建应用程序.我想能够在enter按下键时(或当用户进入下一行时)执行一些代码.我在网上看了一下,没有找到解决方案.使用C#解决这个问题会更好吗?如果没有,我如何在JTextPane的keyTyped()事件中注册Enter键?如果C#是一个不错的选择,我将如何在C#中执行此操作?

这是我认为可行的解决方案......但没有

//Event triggered when a key is typed
private void keyTyped(java.awt.event.KeyEvent evt) {
    int key = evt.getKeyCode();
    if (key == KeyEvent.VK_ENTER) {
        Toolkit.getDefaultToolkit().beep();
        System.out.println("ENTER pressed");
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么上面的例子不起作用是因为无论我按哪个键,我得到一个0的keyCode.我更喜欢用Java解决这个问题但是C#也可以工作,也许更好.另外,请尝试用示例而不是链接回答问题(除非您确实需要).谢谢!

java swing keycode jtextpane actionlistener

9
推荐指数
1
解决办法
2万
查看次数

Java - 更改包含HTML的JTextPane中的字体

我有一个JTextPane,我在JTextPane中有一些文本.但是,因为我一直在Pane中使用HTML,所以文本似乎已自动更改为Times New Roman.

我正在尝试将JTextPane中的字体类型设置为GUI的默认字体(当它不是HTML时,JTextPane的字体).但是,我不能只将字体设置为一种字体,因为它与操作系统不同,因此我想找到一种方法来获取默认字体,然后将我拥有的文本更改为默认字体.

为了演示文本在转换时如何交换到Times New Roman,以下代码是我使用的格式.我怎么能改变它来实现我的目标?

import javax.swing.JFrame;
import javax.swing.JTextPane;


public class GUIExample {

    public static void main(String[] args) {

        JFrame frame = new JFrame("My App");
        frame.setSize(300,300);
        JTextPane pane = new JTextPane();
        pane.setContentType("text/html");
        pane.setText("<html><b>This is some text!</b></html>");
        frame.add(pane);

        frame.setVisible(true);

    }

}
Run Code Online (Sandbox Code Playgroud)

谢谢!

java swing jtextpane

9
推荐指数
2
解决办法
1万
查看次数

JTextPane/JEditorPane和奇怪的文本问题

我正在创建一个简单的聊天程序,我想最终显示HTML链接.我现在的问题是我无法将文本显示在我想要的用户名旁边.

我希望用户的名称为粗体,并且文本显示在其旁边,但由于某种原因,非粗体文本显示为居中.

如果我不粗引用户名,它可以正常工作.前两个是我的名字用粗体显示,中间是名称没有粗体,底部显示一个超链接,我希望它看起来像中间两个,但名称加粗.

在此输入图像描述

这是代码,我做错了什么?请注意,我尝试用JEditorPane替换JTextPane,同样的事情发生了.

package com.test;

import java.awt.BorderLayout;
import java.awt.Color;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;
import javax.swing.WindowConstants;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkEvent.EventType;
import javax.swing.event.HyperlinkListener;
import javax.swing.text.BadLocationException;
import javax.swing.text.SimpleAttributeSet;
import javax.swing.text.StyleConstants;
import javax.swing.text.html.HTML;

public class JTextPaneTest extends JPanel {

    JTextPane pane;

    public JTextPaneTest() {
        this.setLayout(new BorderLayout());

        pane = new JTextPane();
        pane.setEditable(false);
        pane.setContentType("text/html");

        JScrollPane scrollPane = new JScrollPane(pane);
        this.add(scrollPane, BorderLayout.CENTER);

        pane.addHyperlinkListener(new HyperlinkListener() {

            @Override
            public void hyperlinkUpdate(HyperlinkEvent e) {
                if (e.getEventType() == EventType.ACTIVATED) {
                    System.out.println(e.getDescription());
                }

            }
        });

    }

    public …
Run Code Online (Sandbox Code Playgroud)

java swing jtextpane jeditorpane

9
推荐指数
1
解决办法
2229
查看次数

如何在JTextPane中将每个字符设置为不同的颜色/背景颜色?

我一直在寻找这个,到目前为止,我能够想出的是如何创建一个样式并将其应用于这样的角色:

StyledDocument doc = (StyledDocument) new DefaultStyledDocument();
JTextPane textpane = new JTextPane(doc);
textpane.setText("Test");
javax.swing.text.Style style = textpane.addStyle("Red", null);
StyleConstants.setForeground(style, Color.RED);
doc.setCharacterAttributes(0, 1, textpane.getStyle("Red"), true); 
Run Code Online (Sandbox Code Playgroud)

如果您的文档中只有少量样式并希望按名称存储它们,以便以后可以轻松应用它们,这将非常有用.在我的应用程序中,我希望能够为文本中的每个字符独立设置前景色(仅少数值之一)和背景色(灰度,许多不同的值).为此创建潜在的数百/数千种不同风格似乎是一种巨大的浪费.有没有办法设置这些属性,而不必每次都创建一个新的样式?如果我只需渲染文本会更容易,但我也需要使其可编辑.有没有办法做到这一点JTextPane,还是有另一个提供此功能的swing类?

java swing jtextpane jtextcomponent styleddocument

9
推荐指数
2
解决办法
1万
查看次数

JEdi​​torPane具有Javascript和CSS支持

我正在使用Swing,JEditorPane但它不支持Javascript或某些高级标签<object>等,并且不支持颜色,字体样式大小等.

是否有任何解决方案,以便编辑器窗格可以显示HTML文件,因为它在普通的HTML浏览器中显示?

html java swing jtextpane jeditorpane

9
推荐指数
2
解决办法
1万
查看次数