我正在使用简单的文本编辑器,并且在主面板上,我有JList,其中包含当前打开的文件(CDocument类)和活动文档,其中显示了内容(还包括CDocument类)。我将打开的文件(CDocument对象)存储在矢量中,并在右侧显示活动文档。

现在,在程序启动时,没有活动文档,并且打开的文档列表为空。单击“文件”->“新建”后,从类CDocument创建新的空对象。如果我在活动文档区域(屏幕截图中的红色区域)中输入一些内容,然后重新单击File-> New,则会得到新的,空的(无文本-我已经仔细检查过)CDocument对象。但是,先前活动文档中的文本仍显示到新创建的区域(红色区域-新的空CDocument)。我不知道为什么在这里打扰我的大脑?这是File-> New code chunck:
`

if(e.getSource()==this.menuItemFileNew())
{
    CDocument currentDocument=new CDocument();

    if(this.panelMain().documentActive()!=null)
    {
        this.panelMain().remove(this.panelMain().documentActive());
    }

    this.panelMain().openedDocuments().add(currentDocument);
    this.panelMain().setDocumentActive(currentDocument);

    this.panelMain().add(panelMain().documentActive().pane(),
            BorderLayout.CENTER);
    this.panelMain().documentActive().addKeyListener(this);
    this.panelMain().documentActive().requestFocus();

    this.menuItemFileSave().setEnabled(true);
    this.menuItemFileSaveAs().setEnabled(true);
    this.menuItemFileClose().setEnabled(true);
    this.menuItemFileCloseAll().setEnabled(true);

    this.toolBarFileSwitcher().panelActiveDocumentInfo().
            panelFileSizeInfo().updatePanel(this.panelMain().documentActive().getText().length(),
                false);

    this.toolBarFileSwitcher().listOpenedFiles().model().addElement(currentDocument.filename());
    this.toolBarFileSwitcher().listOpenedFiles().setSelectedIndex(this.toolBarFileSwitcher().listOpenedFiles().model().size()-1);
    this.toolBarFileSwitcher().setVisible(true);
}


`

为什么显示文本,我尝试过updateUI,重新绘制,没有任何效果!

最佳答案

使用Action封装与您的CDocument数据类型相关的功能。这将有助于确保所有调用都是一致的。此example管理图像,而此example说明文件菜单。

关于java - 文字重复,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15672778/

10-10 09:47