【问题标题】:JLayeredPane disrupting LayoutJLayeredPane 破坏布局
【发布时间】:2020-08-27 00:29:58
【问题描述】:

我想要一个包含与 JTable 重叠的条目的日历。 该 JTable 位于滚动窗格内,而滚动窗格又位于 JLayeredPane 内。

setLayout(new MigLayout("", "[:20%:200px,grow][26%,grow][26%,grow][26%]", "[:15%:80px,grow][85%,grow]"));

add(layeredPane, "cell 1 1 3 1,grow");
layeredPane.setLayout(new MigLayout("", "[100%,grow]", "[100%,grow]"));
layeredPane.setBackground(Color.BLACK);

table = new JTable();

JScrollPane scrollPane = new JScrollPane(table);
layeredPane.add(scrollPane, "cell 0 0,grow",0);

我现在正在计算我的面板的边界,它应该是一个条目。然而,当将该条目添加到 JLayeredPane 时,整个布局被打乱,它似乎在同一层上。即使我的计算值是错误的,错误的结果仍然应该显示在不同的图层上。

JPanel panel = new JPanel();
panel.setBounds((int)position.getX(), (int)position.getY(), width, height);
panel.setBackground(Color.BLACK);
pane.add(panel, 300); // This is the JLayeredPane

但是,当我进入全屏模式时,会发生这种情况:

为什么面板没有在不同的图层上显示面板,为什么我的布局被它破坏了?

【问题讨论】:

标签: java swing layout-manager miglayout jlayeredpane


【解决方案1】:
pane.add(panel, 300); 

嗯,这似乎是您将面板添加到分层窗格的代码。虽然您的代码中的其他地方也有一个名为“layeredPane”的变量,所以我不确定。

如果这是指分层窗格,那么这不是您向图层添加组件的方式:

  1. 为什么要使用 300 作为图层?这不是像素位置
  2. 层由 Integer 值指定,而不是 int。

阅读 How to Use Layered Panes 上的 Swing 教程部分,了解更多信息和工作示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-22
    • 2013-12-06
    • 2018-11-28
    • 1970-01-01
    • 1970-01-01
    • 2021-06-14
    • 2021-12-10
    • 2020-11-17
    相关资源
    最近更新 更多