当前位置: 首页 > 面试题库 >

在Java Swing中从布局隐藏按钮

屠锐
2023-03-14
问题内容

我正在尝试一些非常基本的东西:我列出了5个按钮。它们位于FlowLayout中,通常的想法是,一旦我单击一个,它将消失,而其他应该相应地重新排序。

现在,如果我调用setVisible(false),该按钮将变为不可见,但它仍在Layoutmanager中占据它的空间。

有什么办法可以在隐藏它的同时将Button保留在JPanel中,以便它不会被Layout拾取?

更新::
感谢您提供所有答案,删除按钮的问题在于顺序很重要。我试图解决的问题是在您键入szenario时发现的问题,在该发现中,很长的按钮列表被筛选为仅与输入字符匹配的按钮,以便用户可以轻松单击它们。由于用户可以从搜索字段中删除字符,因此顺序很重要,并且一旦它们再次匹配,则必须弹出按钮。


问题答案:

对我来说很好。

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class FlowLayoutInvisible extends JFrame
    implements ActionListener
{
    JPanel north;
    int i;

    public FlowLayoutInvisible()
    {

        north = new JPanel();

        for (int i = 0; i < 5; i++)
        {
            JButton button = new JButton("North - " + i);
            button.addActionListener(this);
            north.add(button);
        }

        getContentPane().add(north, BorderLayout.NORTH);
        }

    public void actionPerformed(ActionEvent e)
    {
        Component c = (Component)e.getSource();
        c.setVisible(false);
    ((JPanel)c.getParent()).revalidate();
    }

    public static void main(String[] args)
    {
        FlowLayoutInvisible frame = new FlowLayoutInvisible();
        frame.setDefaultCloseOperathtml" target="_blank">ion( EXIT_ON_CLOSE );
        frame.pack();
        frame.setLocationRelativeTo( null );
        frame.setVisible(true);
    }
}

如果您需要更多帮助,请发布SSCCE。

更新:我不知道是否需要revalidate()。我似乎曾经有过一个问题,但现在我无法重复这个问题。



 类似资料:
  • 我在努力使用我的应用程序。它应该像下面这样工作。

  • 通过引导程序看起来他们支持折叠较小屏幕的菜单栏项。页面上的其他项目有类似的吗? 例如,我有一个和导航药丸一起漂浮的权利。在小屏幕上,这会导致问题。我想至少把它放在一个类似的点击显示更多的下拉列表中。 这在现有的Bootstrap框架中可能吗?

  • 在我的UITableViewCell中,我有两个UIView堆叠在一起。让我们称之为顶部和底部。 俯视图对superview具有前导、尾随和顶部约束。它的高度约束为20。 底部视图对superview具有前导、尾随和底部约束。它的高度约束为20。 顶部和底部具有垂直约束。 以编程方式“隐藏”底部视图(并使顶部视图接触超级视图的底部)的最简单方法是什么?我不想再创建任何约束,因为我确实在情节提要中设

  • 问题内容: 除了参考JSFiddle上的以下示例外,我无法解释这一点-在该示例中,引入BLUE:hidden属性后,最后一个BLUE框未按预期扩展到宽度的100%。 我的印象是溢出:隐藏只会影响可见性,而不会干扰布局。有人可以解释此示例中的情况吗? 编辑: 此问题似乎仅限于webkit浏览器(例如Chrome) 问题答案: 这是因为,除其他属性外,还引入了新的_块格式化上下文_ 。 您可以在这篇出

  • 我觉得显示/隐藏是一个相当常见的范例,最常见的是,具体取决于业务逻辑。我的问题是,使用自动布局响应隐藏视图的最佳方式是什么,就好像它们的框架是0x0一样。这是一个1-3个功能的动态列表示例。 现在我有一个10px的顶部空间,从按钮到最后一个标签,当标签被隐藏时,它显然不会向上滑动。现在,我创建了这个约束的出口,并根据显示的标签数量修改常量。这显然有点麻烦,因为我使用负常量值将按钮推到隐藏帧上。这也

  • 问题内容: 我需要在不同的页面/视图中显示和隐藏后退按钮。我从贾斯汀·诺埃尔那里得到了参考: App控制器切换按钮显示: 但这是行不通的,因为控制器仅被调用一次,而在不同状态下的视图改变时则不会。同样,从其他控制器(链接到不同的状态)更改$ scope.hideBackButton的值对按钮显示没有任何影响。 谁能告诉我如何在每个导航上切换后退按钮显示。我在这里想念什么? 问题答案: 我今天有完全