「プログラミングがどうしようもない」という問題が増えています。
プログラムの起動時に 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 には、16 進値の文字列を入力できるテキスト入力パネルもあります。
ボタンをクリックすると、ユーザーは別の値の入力を求められます。この値は、最初の 16 進数値を挿入する配列内の位置に対応します。
これらの値が入力されたら、これを反映するように表示を更新/更新したいのですが、どうすればよいかわかりません。
ここでこの質問を見つけました。これは似ていますが、Observer/Observable パターンを実装することが正しい方法であるかどうかはわかりません。また、正しい場合でも、どうすればよいかわかりません: GUI 要素を常に更新するための最良の方法
私の最初のアプローチは、「updateDisplay()」メソッドを追加することでした。これは、ボタンのクリックを処理した後に呼び出すことができ、makeTextPanel メソッドを再度呼び出すことができます。
public void updateDisplay() {
makeTextPanel(text);
}
これでリフレッシュできるかと思いましたが、表示には影響しません。
どんな助けでも感謝します。