gpt4 book ai didi

java - 需要 "non-rectangular Card Layout Panel"或 "Transparent component"

转载 作者:行者123 更新时间:2023-11-29 03:30:31 25 4
gpt4 key购买 nike

我有一个新的要求要更改我的显示。

目前我有一排 3 个单选按钮,位于带有卡片布局的面板上方。按钮控制显示卡片布局面板的卡片。但这似乎浪费了宝贵的屏幕空间。

在拥有按钮及其标题标签的面板上使用 GridLayout(4,1) 可以轻松地将按钮行转换为按钮列。理论上,此面板可以放置在卡片布局面板中显示的每张卡片的左上角,并且每张卡片的顶行可以向上移动到按钮面板的右侧,从而为具有的内容留出更多空间来到下面。

但是对此的遏制模型应该是什么?在此变体中,按钮面板必须出现在每张卡片上。谁拥有它?从逻辑上讲,它需要由所有这些所在的父面板拥有,但它不会显示在卡片上,卡片将覆盖它 - 除非我可以

  1. 在每张卡片显示的时候添加按钮面板,这可能会很困惑,并可能导致闪烁。
  2. 将每张卡片的左上角设为透明,使其显示其父级拥有的左上角按钮面板。但我该怎么做呢?

其他解决方案?

也许

  1. 有两个由单选按钮控制的卡片布局面板。右上角的组件包含按钮面板以外的所有组件,下方的组件位于两者下方。

最佳答案

听起来您可以使用 JLayeredPane 作为两者的父组件,包含单选按钮的面板和卡片面板。

JLayeredPane 允许其子组件重叠,每个子组件属于一个层。

要指定图层,您可以将整数常量作为约束参数传递到 JLayeredPane 的 add(Component, Object) 方法中。整数常量在 JLayeredPane 类本身中定义。您可以将 JLayeredPane.DEFAULT_LAYER 用于卡片面板,将 JLayeredPane.PALETTE_LAYER 用于单选按钮面板。

设置图层后,您仍然需要在 x,y 空间中正确定位两个面板。我建议只用类似这样的方法覆盖 JLayeredPane 的 doLayout() 方法(尚未测试):

public void doLayout()
{
cardPanel.setBounds( new Rectangle( getSize() ));
radioButtonPanel.setBounds( new Rectangle( radtioButtonPanel.getPreferredSize() ));
}

关于java - 需要 "non-rectangular Card Layout Panel"或 "Transparent component",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18539451/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com