You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PlantUML类图连线拥挤问题求助:如何调整连线间距

解决PlantUML中介者模式类图连线拥挤问题

我在用PlantUML绘制中介者模式类图时,ConcrMediator与Button、RadioBtn、EditCtrl等控件类的连线拥挤在一起,尝试切换linetype(ortho/polyline)、使用together分组控件均无效,期望实现连线有间距的效果。

解决方案

通过指定连线方向、调整布局流向、优化类间距可解决该问题,以下是调整后的代码:

@startuml "mediator module"
skinparam linetype ortho
left to right direction  ' 切换为横向布局,避免垂直方向空间拥挤
skinparam class {
    Padding 12  ' 增加类内边距,让类结构更舒展
}

class Mediator {
    +{abstract} createCtrl() : void
    +{abstract} ctrlChanged(CtrlParent*) : void
}

class ConcrMediator {
    +virtual createCtrl() : void
    +virtual ctrlChanged(CtrlParent*) : void
}

class CtrlParent {
    #m_pmediator : Mediator
    +virtual Changed() : void
    +{abstract} Enable(bool) : void
}

class Button {
    +virtual Enable(bool) : void
}

class RadioBtn {
    +Selected(bool) : void
    +virtual Enable(bool) : void
}

class EditCtrl {
    +virtual Enable(bool) : void
    +isContentEmpty : bool
}

Mediator <|---down ConcrMediator

CtrlParent <|---right Button
CtrlParent <|---down RadioBtn
CtrlParent <|---down EditCtrl

CtrlParent o-left-> Mediator

' 给每条连线指定不同方向,强制生成不重叠的路径
ConcrMediator o-down-> RadioBtn
note on link : mp_rbtn1、mp_rbtn2

ConcrMediator o-up-> EditCtrl
note on link : mp_edtctrl1, mp_edtctrl2

ConcrMediator o-right-> Button
note on link : mp_login、mp_logout

@enduml

关键改动说明

  • 新增left to right direction:将默认垂直布局改为横向,让ConcrMediator与控件类拥有更多横向排布空间
  • 为每条ConcrMediator到控件的连线指定不同方向(down/up/right):强制PlantUML为每条连线生成独立路径,避免重叠拥挤
  • 调整skinparam class Padding:增大类的内边距,让类尺寸更宽松,间接给连线留出更多间距
  • 移除together分组:横向布局下无需强制分组,反而会限制控件的自由排布空间

若仍有轻微拥挤,可尝试给ConcrMediator添加空白成员(如+ )增加类高度,或用rank same; Button, RadioBtn, EditCtrl命令将三个控件锁定在同一水平层级。

内容的提问来源于stack exchange,提问作者user23267295

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 04:25:00