QHYun_practice-13

主工作区主要还是一个panel,主要还是用javadocking将主工作区划分为四个部分,也就是四个小块,左上角放文件树,左下角暂时保留,右边中间是主工作区内容,右下放信息窗口,有什么需要打印的信息都可以放在右下角。
package QHgui;
 
import QHgui.docing.SDockPosition;
import SingleService.SingleInstance;
import SingleService.SingleInstanceKey;
import com.javadocking.DockingManager;
import com.javadocking.dock.TabDock;
import com.javadocking.dockable.DefaultDockable;
import com.javadocking.dockable.Dockable;
import com.javadocking.dockable.DockingMode;
import com.javadocking.model.DockingPath;
 
import javax.swing.*;
import java.awt.*;
 
/**
 * <p> TODU </P>
 *
 * @author yeager
 * @Version V1.1.1.0
 * @date 2023/11/24 10:33
 */
public class MainWorkingPanel extends DockManagerPanel{
    public static final String             CENTER_DOCKING_PATH_ID  = "centerDockingPathId";
    //主要的界面
    JPanel msgPanel=null;
    DocumentTreePanel documentTreePanel=null;
 
    //主要的docker
    Dockable dockable_Message=null;
    private DockingPath messageDockingPath=null;
    Dockable dockable_project=null;
 
    Dockable dockable_mainwork=null;
 
 
    public MainWorkingPanel(Window ownerWindow)
    {
        super(ownerWindow);
    }
 
    /**
     * 初始化界面上的部件
     * @param ownerWindow
     */
    void initCompoments(Window ownerWindow)
    {
        //消息栏
        msgPanel=new JPanel();
        JLabel demo = new JLabel("demo");
        msgPanel.add(demo);
        SingleInstance.registerInstance(SingleInstanceKey.IMessagePanel, msgPanel);
        //文档树
        documentTreePanel=new DocumentTreePanel();
        SingleInstance.registerInstance(SingleInstanceKey.IDocumentTreePanel,documentTreePanel);
 
        initDocks();
    }
 
    /**
     * 初始化Dock
     */
    void initDocks()
    {
        //消息栏
        dockable_Message = new DefaultDockable("Message", msgPanel,"Message", null, DockingMode.ALL);
        dockable_Message=addNormalLimitActions(dockable_Message);
        addDockable(dockable_Message, SDockPosition.RightBottom,0);
        addDockingPath(dockable_Message);
        //文档树
        messageDockingPath= DockingManager.getDockingPathModel().getDockingPath(dockable_Message.getID());
 
        dockable_project = new DefaultDockable("Project", documentTreePanel, "Project", null, DockingMode.ALL);
        dockable_project=addNormalLimitActions(dockable_project);
        addDockable(dockable_project, SDockPosition.LeftTop,0);
 
        leftTopTabbedDock.setSelectedDockable(dockable_project);
    }
 
    public TabDock getMainWorkDockable()
    {
        return centerTabbedDock;
    }
    @Override
    public void LoadUI(Window ownerWindow)
    {
        super.LoadUI(ownerWindow);
        initCompoments(ownerWindow);
    }
    @Override
    public void LoadLayout(Dimension size) {
        // TODO 自动生成的方法存根
 
    }
 
    public void restoreAll()
    {
 
        updateDock();
        initDocks();
 
        this.repaint();
    }
}

初步实现后的样子:

 

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