标签: jtextcomponent

智能JScrollPane自动滚动

我试图在包含JTextPane的JScrollPane上实现智能自动滚动.JTextPane用于以彩色记录我的应用程序.然而,我正试图进行智能自动滚动.通过智能自动滚动我并不是指每次发生变化时盲目地自动滚动,我的意思是检查你是否一直向下滚动,然后自动滚动.然而,无论我做什么,它总是自动滚动或根本不自动滚动

作为测试脚本,这里是设置(JFrame已被忽略)

final JTextPane textPane = new JTextPane();
textPane.setEditable(false);
final JScrollPane contentPane = new JScrollPane(textPane);
contentPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
Run Code Online (Sandbox Code Playgroud)

这是丑陋的自动添加测试循环

while (true)
    try {
        Thread.sleep(1000);
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    JScrollBar scrollBar = scroll;
                    boolean preCheck = ((scrollBar.getVisibleAmount() != scrollBar.getMaximum()) && (scrollBar.getValue() + scrollBar.getVisibleAmount() == scrollBar.getMaximum()));
                    System.out.println("Value: " + scroll.getValue()
                                    + " | Visible: " + scrollBar.getVisibleAmount()
                                    + " | Maximum: " + scrollBar.getMaximum()
                                    + " | Combined: " + (scrollBar.getValue() + scrollBar.getVisibleAmount())
                                    + …
Run Code Online (Sandbox Code Playgroud)

java swing jscrollpane jtextcomponent autoscroll

7
推荐指数
1
解决办法
4081
查看次数

将Action与DocumentListener一起使用

我正在开发一个应用程序,我希望通过用户更新JTextArea的内容来触发某些内容,或者通过按下JButton手动触发.

我已经使用DocumentListener完成了第一部分,并将相关代码放在其insertUpdate方法中.

我之前没有使用过Actions,但我听说它们适用于需要多个控件触发的情况.是否可以从DocumentListener触发操作?根本不使用Actions是一个好主意,还是应该将我的代码放在普通方法中?

(在构造函数中):

    textAreaInput.getDocument().addDocumentListener(new DocumentListener() {
        public void insertUpdate(DocumentEvent e) {
            // do something
        }
        public void removeUpdate(DocumentEvent e) {}
        public void changedUpdate(DocumentEvent e) {}
    });
Run Code Online (Sandbox Code Playgroud)

和行动,这是一个领域:

Action doSomething = new AbstractAction("Do Something!") {
    @Override
    public void actionPerformed(ActionEvent e) {
        // do it
    }
};
Run Code Online (Sandbox Code Playgroud)

澄清:

JTextArea将接收用户粘贴的文本,我想自动解析.解析依赖于GUI中其他位置设置的其他值; 如果用户更改了这些其他值,他可能想要重新解析文本,因此需要通过按下按钮来执行相同的操作.

java swing action jtextcomponent documentlistener

7
推荐指数
1
解决办法
1493
查看次数

JTable,JTextArea或JEditorPane突出显示代码行?

更新:

我发现在这个答案部分解决这里,通过添加以下代码:

class CustomRenderer extends DefaultTableCellRenderer 
{
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
    {
        Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
        c.setBackground(new java.awt.Color(255, 72, 72));
        return c;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后将它传递给我的JTable对象:

jTable2.setDefaultRenderer(String.class, new CustomRenderer());
Run Code Online (Sandbox Code Playgroud)

这工作正常,现在表行为红色:

Psuedocode面板

我现在唯一需要知道的是如何将着色限制为单行和单个单元格.

进一步研究后,我需要一个setCellRender()方法,以便我可以在特定单元格上设置自定义渲染,但此方法不存在.


题:

我想创建一个逐步伪代码执行的可视组件.

为此,我创建了一个JTable,现在我正在寻找突出显示每一行(或单元格,因为只有一列)来显示正在执行哪一行的方法.

我在下面的最终GUI中包含了一个模型.正如你在Pseudocode面板中看到的那样,我突出了最后一行.

请忽略它们与问题没有严格关联的箭头.

线框

我已经开始在Netbeans Matisse中实现这个模型(这是3种算法中的1种).但是我不知道如何突出code line 1JTable组件中的单行.

使用不同类型的组件会更容易吗?

稍后我还需要能够重新着色单个单元格,如模型的表格JPanel中所示.如何实施?

部分实施

java swing jtable jtextcomponent

6
推荐指数
1
解决办法
1373
查看次数

基于Java文本的应用程序

主要思想是尝试创建一个具有标准Linux类型终端外观的应用程序.现在我只限于Java,这就是我想要的.

  1. 带有顶层菜单的主窗口(独立JFrame)(确定,我知道该怎么做)
  2. 菜单栏下方的整个区域用于"控制台",用户可以通过输入命令进行交互(这我没有任何线索).

有没有足够简单的方法来做这样的事情.这应该是一个文本处理应用程序,应该独立于系统并独立运行.所有工作逻辑都应该来自用户输入.

有任何想法吗?

java terminal swing text jtextcomponent

6
推荐指数
2
解决办法
1370
查看次数

如何使用TextAction

AbstractAction使用TextAction的目的是什么?以及如何将其用于以下内容:

java swing action key-bindings jtextcomponent

5
推荐指数
2
解决办法
1246
查看次数

失去焦点后,jTextArea停止在文本上突出显示

当我的jTextArea处于焦点时,它允许文本突出显示,但是当它失去焦点时它不显示文本选择.即使用户将焦点移动到相关jFrame上的另一个组件,是否可以继续显示文本突出显示?

java swing jtextcomponent swing-highlighter

5
推荐指数
2
解决办法
1419
查看次数

DocumentFilter:为什么调用replace()而不调用insertString()?

我已经实现了一个DocumentFilter子类,当我输入文本时JTextComponent,replace()调用过滤器的方法,而不是insertString()(从不调用).知道为什么会这样吗?

java swing jtextcomponent documentfilter

5
推荐指数
1
解决办法
481
查看次数

JTextComponent键映射

我需要创建一个派生自JTextComponent(从JTextPane,实际)的类,其中至少有一个默认键映射被更改.也就是说,在我特殊的JTextPane中,我希望">"键击执行操作而不是将该字符添加到文本窗格中,因为默认情况下会处理所有可打印的键入字符.

为了打破正常行为,有以下API:

  • JTextComponent.getKeymap()
  • Keymap.addActionForKeyStroke()
  • JTextComponent.setKeymap()

但是,我发现尽管这些方法不是静态的,但它们会影响JTextComponent我的应用程序中所有s 使用的键盘映射.没有简单的机制可以克隆Keymap,可能会解决问题,或者我错过了什么.

我所追求的是一种改变我的JTextPane类的键映射的方法,但不是所有来自JTextComponent类的键.

或者我应该在别处寻找?

java swing keymapping jtextcomponent

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

在java中着色文本

我有一个文件,我将逐行阅读.通过使用split方法将每一行拆分为单词,并根据单词的位置(每行的前4个字符等)对单词进行着色,也可以基于单词.不同的颜色应该应用于不同的单词,如下所示.我想知道哪个班级有用,我看了一下荧光笔.任何建议,举例都会非常有帮助

String text = textArea.getText();
String newLine = "\n";
String spaceDelim = "[ ]+";
String[] tokens;
String lines = text.split(newLine);
for(String line : lines) {
    tokens = line.split(spaceDelim);
    tokens[1] //should be in redColor
    tokens[2] //should be in greenColor
    tokens[3] tokens[4] //should in blueColor
}
Run Code Online (Sandbox Code Playgroud)

java fonts swing colors jtextcomponent

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

文本组件以相反的顺序显示行

好吧,我不知道如何解决这个问题,只是在尝试在UI Text组件上放入一些较长的文本后才遇到这个问题.我已尝试通过Unity编辑器将值粘贴到其Text属性中,并以编程方式设置其值,如下所示:

t.GetComponent<Text> ().text = "This is where meat, fish, and [...] (long text)"
Run Code Online (Sandbox Code Playgroud)

由于水平换行已打开,因此文本在到达可用空间的边缘时会换行.

但是,文本向后显示.意思是,段落的开头位于底部,底部位于顶部.脱掉包装修复了这个,但是字体大小必须非常小(或者它不会全部可见),并且它不能形成正常的段落,因为它必须...你知道...换行.

这是Unity中的一个错误吗?

这就是发生的情况 - 正如您所看到的,它向后显示:

在此输入图像描述

text unity-game-engine jtextcomponent

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