我遇到了更多“我对编程毫无希望”的问题。
我有一段代码,它使用 StringBuilder 在程序启动时在 GUI 的文本面板中显示数组元素。这是 StringBuilder 代码:
// memory tab
StringBuilder mList = new StringBuilder();
memLocList = new Memory[MEM_LOCATIONS];
mem = new Memory();
for (int i = 0; i < memLocList.length; i++) {
memLocList[i] = mem;
memLocList[i].setOpCode(00);
mList.append(String.format("%10s %04x %10s %6s", "Address: ", i,
"Value: ", memLocList[i].getOpCode()));
mList.append("\n");
}
JComponent memTab = makeTextPanel(mList.toString());
tabs.addTab("Memory", new JScrollPane(memTab));
}
protected JComponent makeTextPanel(String t) {
text = t;
JPanel panel = new JPanel(false);
JTextPane filler = new JTextPane();
filler.setFont(new Font("Courier", Font.PLAIN, 14));
filler.setText(text);
filler.setAlignmentX(LEFT_ALIGNMENT);
panel.setLayout(new GridLayout(1, 1));
panel.add(filler);
return panel;
}
GUI 也有一个文本输入面板,可以在其中输入十六进制值的字符串。
单击按钮时,系统会提示用户输入另一个值,该值对应于数组中应插入第一个十六进制值的位置。
输入这些值后,我希望更新/刷新显示以反映这一点,但不确定如何去做。
我在这里找到了这个问题,这是相似的,但我不确定实现观察者/可观察模式是否是正确的方法,即使是,我将如何去做: Best Way to Constantly Update GUI Elements
我最初的方法是添加一个“updateDisplay()”方法,我可以在处理按钮单击后调用它并重新调用 makeTextPanel 方法:
public void updateDisplay() {
makeTextPanel(text);
}
我认为这可能会刷新它,但它对显示没有影响。
任何帮助表示赞赏。