У меня больше проблем с "я безнадежен в программировании".
У меня есть фрагмент кода, который использует StringBuilder для отображения элементов массива в текстовой панели графического интерфейса при запуске программы. Вот код 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;
}
Графический интерфейс также имеет панель ввода текста, где можно ввести строку шестнадцатеричных значений.
При нажатии кнопки пользователю предлагается ввести другое значение, соответствующее позиции в массиве, куда должно быть вставлено первое шестнадцатеричное значение.
После того, как эти значения были введены, я хотел бы, чтобы дисплей обновлялся/обновлялся, чтобы отразить это, но я не уверен, как это сделать.
Я нашел этот вопрос здесь, который похож, но я не уверен, что реализация шаблона Observer/Observable является правильным путем, и даже если это так, как бы я это сделал: Лучший способ постоянно обновлять элементы графического интерфейса
Мой первоначальный подход состоял в том, чтобы добавить метод «updateDisplay()», который я мог бы вызвать после обработки нажатия кнопки и повторно вызвать метод makeTextPanel:
public void updateDisplay() {
makeTextPanel(text);
}
Я думал, что это может обновить его, но это не влияет на отображение.
Любая помощь приветствуется.