QHYun_practice-15

写一下信息窗,信息窗的实现主要是为了很好的打印需要打印的信息,可能这些信息会需要向日志一样输出。

其实我的想法就是一个信息暂时的窗口,比如后面跑算法的时候,凡是需要println的地方,都可以输出到这个信息窗来,这样方便检查。

主要就是建一个panel,实现下面的两个方法,后面需要打印的时候,就通过单例找到这个窗体的实例,然后调用者两个方法,就可以输出在这个信息窗了。

  public void AddMessage(MessageItem msg)
    {
        ListModel<MessageItem> model=list.getModel();
        DefaultListModel<MessageItem> model2=(DefaultListModel<MessageItem>)model;
        //boolean selectLast=list.getSelectedIndex()==model.getSize()-1||list.getSelectedIndex()<0;
        model2.addElement(msg);
        //if(!selectLast)
        //return;
        int index=model.getSize()-1;
        list.setSelectedIndex(index);
        list.scrollRectToVisible(list.getCellBounds(index, index));
    }
    @Override
    public void AddMessages(ArrayList<MessageItem> msgs)
    {
        ListModel<MessageItem> model=list.getModel();
        DefaultListModel<MessageItem> model2=(DefaultListModel<MessageItem>)model;
        //boolean selectLast=list.getSelectedIndex()==model.getSize()-1||list.getSelectedIndex()<0;
        for(MessageItem msg:msgs)
        {
            model2.addElement(msg);
        }
        //if(!selectLast)
        //return;
        int index=model.getSize()-1;
        list.setSelectedIndex(index);
        list.scrollRectToVisible(list.getCellBounds(index, index));
    }

调用的展示:

    IMessagePanel mp=(IMessagePanel)SingleInstance.getInstance(SingleInstanceKey.IMessagePanel);
                    mp.AddMessage(
                            new MessageItem("now we print a line!",MessageType.Information));

运行结果:

 

posted @ 2025-07-21 09:38  Wind_Swing_Dunn  阅读(4)  评论(0)    收藏  举报