【问题标题】:Can I make a component transparent without hiding it?我可以使组件透明而不隐藏吗?
【发布时间】:2020-03-25 22:15:16
【问题描述】:

我需要使一个组件透明,所以什么都看不到,但它仍然占据了它的位置(与 setVisible(false) 不同)。

对于 CSS 术语,我需要 visibility:hidden 而不是 display:none

理想情况下,它应该适用于任何组件,包括容器及其子组件。所以我不认为,继承和覆盖paint 或类似的方法是要走的路。

  • 用其他组件替换并委托可以做到吗?
  • 或者有没有更简单的方法?

【问题讨论】:

    标签: java user-interface codenameone transparency


    【解决方案1】:

    setVisible() 隐藏了一个组件,但它仍然占据了它的空间,这与 setHidden() 不同,它缩小了组件`。见:

    Form hi = new Form("Visible", BoxLayout.y());
    
    Button r1 = new Button("Regular");
    Button invisible = new Button("Invisible");
    invisible.setVisible(false);
    Button r2 = new Button("Regular");
    
    Button r3 = new Button("Regular");
    Button hidden = new Button("Hidden");
    hidden.setHidden(true);
    Button r4 = new Button("Regular");
    
    hi.add(BoxLayout.encloseX(r1, invisible, r2));
    hi.add(BoxLayout.encloseX(r3, hidden, r4));
    
    hi.show();    
    

    【讨论】:

    • 太好了!我在问的时候是在依靠我的记忆……这是错误的。实际上,我需要setHiddensetVisible
    【解决方案2】:

    一种方法是获取您希望有时透明的组件(称为“trans”)并将其放置在另一个 JPanel(“holder”)中,然后在您将放置 trans 的位置放置 holder。

    为了让事情变得透明,将 holder 的首选大小设置为 trans 的首选大小,并将 trans 的可见性设置为 false,并重新验证 holder 的父级。

    【讨论】:

    • 您好,这个问题与Codename One有关,而不是Swing。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-12
    • 1970-01-01
    • 2010-10-01
    • 1970-01-01
    • 2011-12-14
    • 2023-03-27
    • 1970-01-01
    相关资源
    最近更新 更多