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));
运行结果:

 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号