我在某处有几千行代码,我注意到当我更新它时,我的JTextPane闪烁......我在这里写了一个简化版本:
import java.awt.*;
import javax.swing.*;
public class Test
{
static JFrame f;
static JTextPane a;
static final String NL = "\n";
public static void main(String... args)
{
EventQueue.invokeLater(new Runnable(){
public void run()
{
f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
f.setSize(400, 300);
f.setLocationRelativeTo(null);
a = new JTextPane();
f.add(new JScrollPane(a));
new Thread(new Runnable(){
public void run()
{
int i = 0;
StringBuffer b = new StringBuffer();
while(true)
{
b.append(++i+NL);
a.setText(b.toString());
a.setCaretPosition(b.length());
try{Thread.sleep(10);}catch(Exception e){}
}
}
}).start();
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
这是针对终端(cmd)样式的GUI组件 - …
我正在尝试创建一个显示网页的JPanel.我已经到了可以阅读网页的阶段,但是当我显示页面时,它看起来很混乱,见下文.

这是源代码:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.io.*;
public class Browser {
private JFrame frame;
private JPanel panelTop;
private JEditorPane editor;
private JScrollPane scroll;
private JTextField field;
private JButton button;
private URL url;
public Browser(String title) {
initComponents();
//set the title of the frame
frame.setTitle(title);
//set the default cloe op of the jframe
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//set size of frame
frame.setSize(800,600);
//add jpanel to north of jframe
frame.add(BorderLayout.NORTH, panelTop);
//add textfield and navigation button to jpanel.
panelTop.add(field);
panelTop.add(button); …Run Code Online (Sandbox Code Playgroud) 我偶然发现了以下问题:
我想在组件的插入符号的位置读取JTextComponent文档中的字符.当我使用JTextPane时,在插入符号位置返回的字符不正确.更详细地说,返回的字符是字符是插入符号的位置减去行的数量!(插入位置 - 当前行的编号).另一方面,当我使用JTextArea时,结果是正确的......为了证明这一点,我已经实现了一个可以使用的示例程序.
所以最大的问题是,在JTextPane的情况下,如何获得插入符号的位置?
为什么JTextPane不会返回与JTextArea相同的插入位置,还有更多为什么JTextPane返回的字符不是我们在屏幕上看到的字符?描述的行为是错误的吗?
您可以在下面找到示例程序的代码以及非常有趣和意外结果的屏幕截图
使用JTextPane.CARET职位17中的字母是e.不...
alt text http://img405.imageshack.us/img405/2746/jtextpane.jpg
使用JTextArea.在这里,我的插入符号与之前的位置相同,但现在我得到插入位置20,返回字母是\ r \n(与预期的一个).
alt text http://img809.imageshack.us/img809/5323/jtextarea.jpg
以下是您可以使用的代码来查看这种奇怪的行为:
import java.awt.*;
import javax.swing.*;
import javax.swing.text.*;
import java.awt.event.*;
public class Example extends JFrame {
// use this instead of JTextPane to see the difference
// JTextComponent testingArea = new JTextArea(5,10);
JTextComponent testingArea = new JTextPane();
JButton button = new JButton("test");
JTextComponent resultArea = new JTextField(20);
public Example() {
initialise();
testingArea.setText("line1\r\nline2\r\nline3\r\nline4");
}
private void initialise() {
testingArea.setPreferredSize(new Dimension(100,100));
setLayout(new FlowLayout());
getContentPane().add(testingArea); …Run Code Online (Sandbox Code Playgroud) 我不确定哪个容器或组件可以帮助创建以下菜单栏.我已经在底部创建了菜单栏和状态栏.但我不知道哪个界面最好.

我很感激任何帮助,
问题:我有CaretListener和DocumentListener监听JTextPane.
我需要一个能够在JTextPane中判断哪条线是插入符号的算法,这是一个说明性示例:

结果:第3行

结果:第2行

结果:第4行
如果该算法可以分辨出哪行插入符号是在JTextPane的,它应该是很容易的子无论是在括号中的图片(插入符号是人物之间m的metadata):

-
这就是我将从JTextPane检索到的整个文本分成句子的方式:
String[] lines = textPane.getText().split("\r?\n|\r", -1);
Run Code Online (Sandbox Code Playgroud)
中的句子textPane用\n分隔.
问题是,我如何操纵插入符让我知道它在哪个位置和哪条线?我知道插入符号的点说它在哪个位置,但我不知道它在哪一行.假设我知道插入符号是哪一行,那么我就可以lines[<line number>]从那里操作并操纵字符串.
简而言之:如何使用CaretListener和/或DocumentListener来了解插入符当前所在的行,并检索该行以进行进一步的字符串操作?请帮忙.谢谢.
如果需要进一步澄清,请告诉我.谢谢你的时间.
我试图从JTextPane获得漂亮(清理)的文本内容.以下是来自的示例代码JTextPane:
JTextPane textPane = new JTextPane ();
textPane.setContentType ("text/html");
textPane.setText ("This <b>is</b> a <b>test</b>.");
String text = textPane.getText ();
System.out.println (text);
Run Code Online (Sandbox Code Playgroud)
文字看起来像这样JTexPane:
这是一个考验.
我得到这种打印到控制台:
<html>
<head>
</head>
<body>
This <b>is</b> a <b>test</b>.
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我使用过substring()和/或replace()编码,但使用起来很不舒服:
String text = textPane.getText ().replace ("<html> ... <body>\n , "");
Run Code Online (Sandbox Code Playgroud)
是否有任何简单的函数<b>从字符串中删除除标签(内容)之外的所有其他标签?
有时在内容周围JTextPane添加<p>标签,所以我也想摆脱它们.
像这样:
<html>
<head>
</head>
<body>
<p style="margin-top: 0">
hdfhdfgh
</p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我想只获得带有标签的文字内容:
This <b>is</b> …Run Code Online (Sandbox Code Playgroud) 输入X后,我不需要输入任何字符.我需要在输入X字符后发出一声嘟嘟声.我知道在用户按下回车后如何执行此操作,但我需要在用户按Enter键之前执行此操作.我在Oracle网站上发现的方法是将DocumentSizeFilter添加到JTextPane.我不能让它在他们结束时通知用户(在他们按下回车之前它不起作用).这是我的样本.
public class EndCycleTextAreaRenderer extends JTextPane
implements TableCellRenderer {
private final int maxNumberOfCharacters = 200;
public EndCycleTextAreaRenderer() {
StyledDocument styledDoc = this.getStyledDocument();
AbstractDocument doc;
doc = (AbstractDocument)styledDoc;
doc.setDocumentFilter(new DocumentSizeFilter(maxNumberOfCharacters ));
}
Run Code Online (Sandbox Code Playgroud) 我JTextPane来自Netbeans设计师的部分.我想在其上添加列和行.但是,没有选项可以在属性窗口中添加列或行JTextPane.还有另一种方法吗?
我有一个JTextPane,我正在尝试获取JTextPane的默认字体大小.
我试过寻找像getFontSize()和等方法getTextSize(),但似乎没有.我显然遗漏了一些东西,所以有人可以帮忙解决这个问题吗?
我一直试图在小文本编辑器中实现突出显示功能的最后几天.出于某种原因,我得到一个奇怪的结果:

给出的例子应该突出显示每个"dolor" - 第一次出现是正确找到并突出显示但下一次出现并未突出显示.
这是我到目前为止编写的代码:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;
import javax.swing.text.BadLocationException;
import javax.swing.text.DefaultHighlighter;
import javax.swing.text.DefaultHighlighter.DefaultHighlightPainter;
import javax.swing.text.DefaultStyledDocument;
/**
* Highlighting created on 04.11.2013<br>
* <br>
* Specification:<br>
*/
public class Highlighting extends JFrame implements MouseListener {
private JScrollPane scrollPane;
private JTextPane textPane;
private DefaultHighlighter highlighter;
private DefaultHighlightPainter painter;
public static void main(String[] args) {
new Highlighting().setVisible(true);
}
/**
*
*/
public Highlighting() {
this.initialize();
this.build();
this.configure();
}
/**
*
*/ …Run Code Online (Sandbox Code Playgroud)