我有更多「我無法編程」的問題。在GUI中刷新文本面板的顯示
我有一段代碼,它使用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);
}
我想這可能刷新它,但它沒有顯示效果。
任何幫助表示讚賞。
謝謝。我會去實施它。 我在這很沒用,所以我可能需要很長時間,但仍然會弄得一團糟,但我會讓你知道的。 :-) – Robert 2012-07-09 21:44:55
謝謝。它確實花了我很多時間,我確實弄得一團糟,但最終我到了那裏。 – Robert 2012-08-07 13:57:59