使JButton不可见但尊重其原始空间

时间:2014-06-21 01:02:05

标签: java swing layout jbutton

我正在使用GridBagLayout并且我想将某些按钮设置为不可见(即无法看到或点击它们),但是当我使用wdButton.setVisible(false)执行此操作时,其余按钮会移动。我想将原先被无限制按钮占据的空间留空并保持其余部分不变(与呈现here的问题类似)。那里提出的解决方案对我没用,因为我不想改变布局。

目前,我已经能够使用以下代码行完成此操作:

wdButton.setText("");
wdButton.setOpaque(false);
wdButton.setContentAreaFilled(false);
wdButton.setBorderPainted(false);
wdButton.setEnabled(false);

有没有更短的方法来实现这一目标?

1 个答案:

答案 0 :(得分:4)

  

有没有更短的方法来实现这一目标?

创建方法并将按钮作为参数传递。

  

那里提出的解决方案对我没用,因为我不想改变布局。

该解决方案不涉及更改整个面板的布局管理器。它涉及使用包含按钮和空面板的CardLayout将面板添加到主面板。

  

我想将一些按钮设置为不可见

您可以将该按钮替换为另一个组件:

GridBagConstraints gbc = layout.getConstraints( button );
panel.remove( button );
panel.add( new JLabel(" ");
panel.revalidate();

因为你可以看到你做的任何事情都需要多行代码,所以选择最简单的解决方案,然后将代码移到一个方法中,这样你只需要为你想要隐藏的每个组件使用一个语句。