gpt4 book ai didi

java - 有没有办法让 JTextArea 集中在 Java 中的某个文本元素上?

转载 作者:行者123 更新时间:2023-11-30 06:16:07 24 4
gpt4 key购买 nike

抱歉,标题含糊不清,如果没有详细的描述,很难解释我的意思。

我已经构建了一个 CPU 模拟程序,在该程序的 GUI 中,我有一个 JTextArea,其中填充了如下所示的文本字符串

0x01:$00 (0) [BRK]

这些文本行代表 256 字节 RAM 内存中保存的值。 JTextArea 包含 256 行,每一行显示该特定内存地址中保存的内容。看起来像这样

0x01 : $00 (0) [BRK]
0x02 : $00 (0) [BRK]
0x03 : $00 (0) [BRK] <-- PC
0x04 : $00 (0) [BRK]
0x05 : $00 (0) [BRK]
...
0xFF : $00 (0) [BRK]

还存在 PC 箭头,它显示内存单步执行时程序计数器的当前位置。程序每执行一步,PC 就会增加 2。因此,如果 PC 指向 0x03,并且程序步进,则 PC 将递增到 0x05。

我的问题是,由于 JTextArea 的大小,它一次只能显示 12 个字符串,这意味着 6 步后,PC 箭头将从 TextArea 底部消失,用户必须手动向下滚动即可再次查看。

有没有一种方法可以使当 PC 箭头沿着内存地址列表下降时,JTextArea 随之滚动,以便 PC 箭头始终位于 TextArea 的中心,无论向下多远是TextArea吗?

我尝试使用以下代码来实现此目的,但它似乎根本没有造成任何差异。

        int caretVal = 0;
int pc = 0;

try
{
for(int i = 0; i < steps; i++)
{
step();
pc = mos6502.getCpu().getPc();
}

if(pc > 5)
caretVal = pc + 11;

gui.refreshGui();
gui.setMMCaret(caretVal);
}
catch(...)
{
etc...
}

我假设这个方法实际上并没有达到我所相信的效果。但我不太确定。

编辑:另外,我认为这是相关的。在程序的每个步骤之后,都会调用 gui.refreshGui() 方法。此方法会导致 JTextArea 更新为新信息,这会导致 JTextArea 的位置冲到底部,因为它正在填充新信息。

最佳答案

查看 Text Utilities 。此类包含可在文本组件上使用的静态方法。

我认为您会对 centerLineInScrollPane(...) 方法感兴趣。它将尝试将插入符号置于中心线的中心。

它使用 JViewportsetViewPostion(...) 方法将包含 Caret 的行定位在视口(viewport)的中心.

关于java - 有没有办法让 JTextArea 集中在 Java 中的某个文本元素上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49163635/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com