MigLayout 错误:“绝对链接值中的循环依赖不稳定!”

2024-01-01

为什么这个 SSCCE(带有 MigLayout 库)......

public static void main(String[] args) {

    try {
        UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
    } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException e) {
        e.printStackTrace();
    }

    JFrame frame = new JFrame();
    frame.setLayout(new MigLayout(new LC().fill().insetsAll("0")));

    JTabbedPane jtp = new JTabbedPane();
    jtp.add(new JPanel(), "Tab 1");
    jtp.add(new JPanel(), "Tab 2");

    JLabel label = new JLabel("label");

    JPanel panel = new JPanel(new MigLayout(new LC().fill()));
    panel.add(jtp, "id tabbedpane, grow, span");
    panel.add(label, "pos (tabbedpane.w-label.w) 10, id label");
    label.setBounds(100, 100, 10, 10);

    frame.add(panel, "grow, span");
    frame.setSize(500, 500);
    frame.setLocationRelativeTo(null); // Sorry, Andrew Thompson
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

抛出这个错误:

Unstable cyclic dependency in absolute linked values!
Unstable cyclic dependency in absolute linked values!
Unstable cyclic dependency in absolute linked values!
Unstable cyclic dependency in absolute linked values!

?

我发现如果你删除WindowsLookAndFeel代码,然后一切运行正常......

所以,这是 MigLayout 和WindowsLookAndFeel。然而我的实际应用需要使用它。

EDIT:

这是抛出错误时的框架的样子:


看看源代码 http://grepcode.com/file/repo1.maven.org/maven2/com.miglayout/miglayout/3.7.4/net/miginfocom/layout/Grid.java,这种情况发生是因为它在进行布局时对组件的大小进行了修正。如果它进行的更正次数超过 count * 8 + 10,则会短路代码以防止无限循环。

相关来源(删除了一些内容)是:

do {
    doAgain = false;
    for (Iterator<Cell> it = grid.values().iterator(); it.hasNext();) {
        ArrayList<CompWrap> compWraps = it.next().compWraps;
        for (int i = 0, iSz = compWraps.size(); i < iSz; i++) {
            CompWrap cw = compWraps.get(i);

            if (j == 0) {
                doAgain |= doAbsoluteCorrections(cw, bounds);
                // . . .
            }

            // . . .
        }
    }
    clearGroupLinkBounds();
    if (++count > ((compCount << 3) + 10)) {
        System.err.println("Unstable cyclic dependency in absolute linked values!");
        break;
    }

} while (doAgain);

因此,如果 doAbsoluteCorctions 返回 true(在进行更正以满足大小依赖性时,如果任何组件更改大小,则会执行此操作),那么它将重复循环,再次进行更正。您看到的是当重复此操作太多次时它会打印的警告消息。由于校正可能会导致链接组件的大小发生变化,因此您可能会遇到这样的情况:校正取消设置一个组件的 y 值并设置另一个组件的 y 值,然后当第一个组件具有其 y 值时设置后,它会取消设置另一个的 y 值,并且重复此操作,直到我们用完重试次数。

Windows L&F 经常给我带来这个问题,因为组件似乎总是会陷入这样一种情况:它们会进行此校正,并且校正时只更改 1 个像素,但该校正导致它需要重做布局对于导致其向后移动 1 个像素的另一个组件。 “递归”(如果你想这样想的话)是不稳定的,并且没有得出稳定的解决方案。

我不知道删除这些消息的解决方案是什么,但如果它不会在您的应用程序中引起不寻常的“抖动”(如果是的话,您会知道我的意思),我不会担心它。这只是一条消息,表明它正在放弃更正,因为它递归了太多次。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MigLayout 错误:“绝对链接值中的循环依赖不稳定!” 的相关文章

  • java.lang.NoClassDefFoundError:org.apache.batik.dom.svg.SVGDOMImplementation

    我在链接到我的 Android LibGDX 项目的 Apache Batik 库时遇到了奇怪的问题 但让我们从头开始 在 IntelliJ Idea 中我有一个项目 其中包含三个模块 Main Android 和 Desktop 我强调的
  • 制作一个交互式Windows服务

    我希望我的 Java 应用程序成为交互式 Windows 服务 用户登录时具有 GUI 的 Windows 服务 我搜索了这个 我发现这样做的方法是有两个程序 第一个是服务 第二个是 GUI 程序并使它们进行通信 服务将从 GUI 程序获取
  • INSERT..RETURNING 在 JOOQ 中不起作用

    我有一个 MariaDB 数据库 我正在尝试在表中插入一行users 它有一个生成的id我想在插入后得到它 我见过this http www jooq org doc 3 8 manual sql building sql statemen
  • 无法展开 RemoteViews - 错误通知

    最近 我收到越来越多的用户收到 RemoteServiceException 错误的报告 我每次给出的堆栈跟踪如下 android app RemoteServiceException Bad notification posted fro
  • Spring Data JPA 应用排序、分页以及 where 子句

    我目前正在使用 Spring JPA 并利用此处所述的排序和分页 如何通过Spring data JPA通过排序和可分页查询数据 https stackoverflow com questions 10527124 how to query
  • 斯坦福 NLP - 处理文件列表时 OpenIE 内存不足

    我正在尝试使用斯坦福 CoreNLP 中的 OpenIE 工具从多个文件中提取信息 当多个文件 而不是一个 传递到输入时 它会给出内存不足错误 All files have been queued awaiting termination
  • 如何在PreferenceActivity中添加工具栏

    我已经使用首选项创建了应用程序设置 但我注意到 我的 PreferenceActivity 中没有工具栏 如何将工具栏添加到我的 PreferenceActivity 中 My code 我的 pref xml
  • 如何为俚语和表情符号构建正则表达式 (regex)

    我需要构建一个正则表达式来匹配俚语 即 lol lmao imo 等 和表情符号 即 P 等 我按照以下示例进行操作http www coderanch com t 497238 java java Regular Expression D
  • 使用Caliper时如何指定命令行?

    我发现 Google 的微型基准测试项目 Caliper 非常有趣 但文档仍然 除了一些示例 完全不存在 我有两种不同的情况 需要影响 JVM Caliper 启动的命令行 我需要设置一些固定 最好在几个固定值之间交替 D 参数 我需要指定
  • getResourceAsStream() 可以找到 jar 文件之外的文件吗?

    我正在开发一个应用程序 该应用程序使用一个加载配置文件的库 InputStream in getClass getResourceAsStream resource 然后我的应用程序打包在一个 jar文件 如果resource是在里面 ja
  • 加密 JBoss 配置中的敏感信息

    JBoss 中的标准数据源配置要求数据库用户的用户名和密码位于 xxx ds xml 文件中 如果我将数据源定义为 c3p0 mbean 我会遇到同样的问题 是否有标准方法来加密用户和密码 保存密钥的好地方是什么 这当然也与 tomcat
  • 如何在 javadoc 中使用“<”和“>”而不进行格式化?

    如果我写
  • 如何在控制器、服务和存储库模式中使用 DTO

    我正在遵循控制器 服务和存储库模式 我只是想知道 DTO 在哪里出现 控制器应该只接收 DTO 吗 我的理解是您不希望外界了解底层域模型 从领域模型到 DTO 的转换应该发生在控制器层还是服务层 在今天使用 Spring MVC 和交互式
  • AWS 无法从 START_OBJECT 中反序列化 java.lang.String 实例

    我创建了一个 Lambda 函数 我想在 API 网关的帮助下通过 URL 访问它 我已经把一切都设置好了 我还创建了一个application jsonAPI Gateway 中的正文映射模板如下所示 input input params
  • 仅将 char[] 的一部分复制到 String 中

    我有一个数组 char ch 我的问题如下 如何将 ch 2 到 ch 7 的值合并到字符串中 我想在不循环 char 数组的情况下实现这一点 有什么建议么 感谢您花时间回答我的问题 Use new String value offset
  • 无法捆绑适用于 Mac 的 Java 应用程序 1.8

    我正在尝试将我的 Java 应用程序导出到 Mac 该应用程序基于编译器合规级别 1 7 我尝试了不同的方法来捆绑应用程序 1 日食 我可以用来在 Eclipse 上导出的最新 JVM 版本是 1 6 2 马文 看来Maven上也存在同样的
  • Java列表的线程安全

    我有一个列表 它将在线程安全上下文或非线程安全上下文中使用 究竟会是哪一个 无法提前确定 在这种特殊情况下 每当列表进入非线程安全上下文时 我都会使用它来包装它 Collections synchronizedList 但如果不进入非线程安
  • 如何修复 JNLP 应用程序中的“缺少代码库、权限和应用程序名称清单属性”?

    随着最近的 Java 更新 许多人都遇到了缺少 Java Web Start 应用程序的问题Codebase Permissions and Application name体现属性 尽管有资源可以帮助您完成此任务 但我找不到任何资源综合的
  • 将 List 转换为 JSON

    Hi guys 有人可以帮助我 如何将我的 HQL 查询结果转换为带有对象列表的 JSON 并通过休息服务获取它 这是我的服务方法 它返回查询结果列表 Override public List
  • 节拍匹配算法

    我最近开始尝试创建一个移动应用程序 iOS Android 它将自动击败比赛 http en wikipedia org wiki Beatmatching http en wikipedia org wiki Beatmatching 两

随机推荐

  • 链接到 jQuery 文件的最佳方式[重复]

    这个问题在这里已经有答案了 就网站性能 速度而言 链接到 jquery 是否更好 如下所示 或者将文件放在服务器上并从那里链接到它们 如下所示 这取决于谁拥有更快的服务器 对吗 有一些优点code jquery com 这很常见 如果用户访
  • 将十六进制字符串转换为十六进制整数

    我必须将十六进制字符串转换为十六进制整数 如下所示 color 0xFF00FF can be any color else defined by functions colorto 0xFF00FF copy of color but f
  • Google App Engine 502 具有“上游过早关闭连接”,但似乎无法到达我们的实例

    我们有一个提供 API 的 Node js App Engine 服务 很少 500 个请求中就有 1 个 向客户端返回 502 并从 Google Cloud Logging 的 nginx 日志中获取错误 upstream premat
  • 偏航、俯仰和滚转值延迟

    我正在 Windows Phone 7 1 中开发一个应用程序 我需要手机在 x 轴和 y 轴上的当前旋转度数 我尝试使用运动 API 并使用它提供的偏航俯仰和滚动的适当值 但它提供的值是延迟的 因为如果我移动手机太快并将其旋转到 90 度
  • SoapUI - 自动将自定义 SOAP 标头添加到传出请求中

    所以我想要做的是自动将 SOAP 标头添加到 SoapUI 中生成的每个请求中 因为我有数百个请求 手动执行此操作很烦人 可以说 这是我从 WSDL 生成的示例请求 如下所示
  • 简单的 NFC 代码不起作用?

    我正在尝试开始使用 NFC 编写应用程序 我只需要从一部手机向另一部手机发送一条仅包含简单字符串的 NDef 消息 我的传输活动 public class MainActivity extends Activity NfcAdapter m
  • 从 HBase shell 导出数据

    我正在尝试将数据从 HBase Shell 导出到我可以解析的文本文件 然后添加到 msysql 数据库 我目前正在使用以下命令 echo scan registration COLUMNS gt registration status h
  • CSS:Safari 的边距问题

    On the 我正在开发的网站 http like o potomo us 出于某种原因 Safari 的边距需要与 FF IE8 Chrome 和 Opera 不同吗 我有一个链接 我想将其排列在标签旁边 除了 Safari 需要 12
  • COUNTIF 范围内的唯一日期

    我正在努力寻找一种方法COUNTIF S 特定日期集之间 但仅获取唯一日期的计数 作为上下文 我连续几天跟踪仪表 我可以在同一天获得多个具有不同仪表值的实例 事实上 这种情况可能会破坏我的平均米数 天数 Data A3 A8700 是日期范
  • Matplotlib:从多个子图中抓取单个子图

    我有一个应用程序 其中有一个带有九个线图子图 3x3 的图形 我想让用户选择其中一个图表 并打开一个小的 wx Python 应用程序以允许编辑和缩放指定的子图阴谋 是否可以从选定的子图中获取所有信息 即轴标签 轴格式 线条 刻度大小 刻度
  • 检查任何正在运行的二进制文件是否是 32 位或 64 位

    可以检查应用程序包的二进制进程是否在 32 位或 64 位模式下运行 如下所示在这个问题中回答了 https stackoverflow com questions 7335245 macosx find out if a process
  • WebClient.CancelAsync — 文件仍在下载

    我正在尝试使用 Asp NET Core 创建一个 Web API 该 API 公开启动和取消大文件长时间下载的路由 服务器应该能够同时处理多个下载 下载是使用执行的WebClient DownloadFileAsync为了有一个短的响应时
  • 如果我有特定选项卡的 tabId,如何获取该选项卡的窗口对象?

    我有一个选项卡的tabId 如何获取它的窗口对象 在 chrome 扩展中看到的窗口对象 chrome tabs get YOUR TAB ID HERE function tab chrome windows get tab window
  • 如何过滤正在运行的节点

    我想过滤正在运行的节点列表 我尝试了下面的命令 但它只显示运行状态 我需要用它的名称进行过滤 有什么帮助吗 root techsl kubectl get nodes o jsonpath range items metadata name
  • 如何从 Blazor C# 代码生成 window.history.go(-1)?

    如何在 Blazor 上从 C 代码生成 window history go 1 我尝试使用 JSRuntime Current InvokeAsync JSRuntime Current InvokeAsync lt string gt
  • 在R中的plotly直方图函数中自定义bin宽度

    我有一个数据集 其中包含每天的日期和通话量 当我使用plotly R 包绘制它们时 除了其中 1 个之外 所有日期都将每个日期分隔到不同的容器中 然而 这一棘手的数据子集而是将数据分组为 2 天的间隔 这并不是非常有用的信息 我确信这是一个
  • 运行composer时如何始终使用ignore-platform-reqs标志?

    在我的本地计算机上 我有 php v7 0 3 我的一个项目依赖于 php v5 5 正如预期的那样 简单运行composer install崩溃 Your requirements could not be resolved to an
  • SerializeObject 方法运行正确吗?

    我在项目中添加了 json dll 并尝试序列化对象 ProductType itemToEdit new ProductType Name string jsonString JsonConvert SerializeObject ite
  • 用 Python/C API 替换 boost:python 函数包装器后的 std::bad_alloc

    我在 C 中有一个函数 我用它来扩展 python 之前使用BOOST MODULE函数来完成这个任务 转换到 python C API 时出现此错误 我确信run mymodule没有这个包装器 函数可以正常运行 static PyObj
  • MigLayout 错误:“绝对链接值中的循环依赖不稳定!”

    为什么这个 SSCCE 带有 MigLayout 库 public static void main String args try UIManager setLookAndFeel com sun java swing plaf wind