Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 刷新GUI中文本面板的显示_Java_User Interface_Refresh_Stringbuilder - Fatal编程技术网

Java 刷新GUI中文本面板的显示

Java 刷新GUI中文本面板的显示,java,user-interface,refresh,stringbuilder,Java,User Interface,Refresh,Stringbuilder,我有更多的“我对编程毫无希望”的问题 我有一段代码,它使用StringBuilder在程序启动时在GUI的文本面板中显示数组元素。以下是StringBuilder代码: // memory tab StringBuilder mList = new StringBuilder(); memLocList = new Memory[MEM_LOCATIONS]; mem = new Memory(); for (int i = 0; i < memLocLis

我有更多的“我对编程毫无希望”的问题

我有一段代码,它使用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;
}
我认为这可能会刷新它,但它没有显示效果


非常感谢您的帮助。

您将数组保存在一个模型类中,并通过为该类提供一个SwingPropertyChangeSupport对象和一个addPropertyChangeListener(…)方法,允许其他类“侦听”该数组。然后给数组一个setXXX(…)方法,在该方法中,在更新数组后激发SwingPropertyChangeSupport对象。在这个网站上有这样的例子,有些是我写的

例如:

顺便说一句,您对
makeTextPanel(text)
的调用不起作用,我并不感到惊讶。它创建了一个JPanel,但您似乎没有对该方法返回的JPanel执行任何操作。但你也不应该。我不认为创建新的JPanel是您想要的解决方案,而是使用我上面描述的侦听器框架更新某种组件(如JList或JTextArea)显示的字符串


如果有任何问题让人困惑,请要求澄清。

您将数组保存在一个模型类中,并通过为该类提供一个SwingPropertyChangeSupport对象和一个addPropertyChangeListener(…)方法,允许其他类“侦听”。然后给数组一个setXXX(…)方法,在该方法中,在更新数组后激发SwingPropertyChangeSupport对象。在这个网站上有这样的例子,有些是我写的

例如:

顺便说一句,您对
makeTextPanel(text)
的调用不起作用,我并不感到惊讶。它创建了一个JPanel,但您似乎没有对该方法返回的JPanel执行任何操作。但你也不应该。我不认为创建新的JPanel是您想要的解决方案,而是使用我上面描述的侦听器框架更新某种组件(如JList或JTextArea)显示的字符串


如果有任何疑问,请要求澄清。

谢谢。我将尝试实现这一点。我在这方面很没用,所以我可能会花很长时间,但还是会把事情搞得一团糟,但我会让你知道的。:-)谢谢这确实花了我很多时间,我确实把事情搞得一团糟,但我最终还是做到了。谢谢。我将尝试实现这一点。我在这方面很没用,所以我可能会花很长时间,但还是会把事情搞得一团糟,但我会让你知道的。:-)谢谢这确实花了我很多时间,我确实把事情搞得一团糟,但我最终还是做到了。
public void updateDisplay() {

    makeTextPanel(text);
}