主工作区主要还是一个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();
}
}
初步实现后的样子: