【问题标题】:How can I add a gap around the edge of a Jbutton?如何在 Jbutton 的边缘周围添加间隙?
【发布时间】:2011-10-15 17:00:47
【问题描述】:

我想在我的JButtons 上保留默认边框,但也要在它们周围留出空白。我正在使用垂直BoxLayout

  • 我最初对边框没说什么,得到了我想要的单像素LineBorders,但是按钮都相互对接了。

  • 然后我尝试了button[i].setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5))。它不是在按钮周围添加空白区域,而是使按钮的区域扩大。它还删除了LineBorder

  • 然后我尝试了:button[i].setBorder(BorderFactory.createCompoundBorder( BorderFactory.createEmptyBorder(5, 5, 5, 5), button.getBorder()))

这给了我LineBorder,但不是在行外添加空格,它只是将按钮的区域扩展到行之外!

我意识到我可以添加空白框来隔开按钮,但我也希望在它们的两侧留出空间,这就是我想添加EmptyBorder 的原因。我是 Swing 新手,所以也许有一种我不知道的完全更好的方法:)

我使用的是 Jython,但 API 应该与 Java 相同。

【问题讨论】:

    标签: java swing user-interface layout jython


    【解决方案1】:

    从概念上讲,您要添加的“空边框”实际上并不是按钮的一部分(例如,它们不应该是可点击的)。

    这实际上是一个布局问题,因此您可能应该查看您正在使用的布局管理器的文档。例如:

    等等。

    【讨论】:

    • 嗯。当我单击线边框外的按钮时,它仍然有效吗? FlowLayout 不允许你垂直排列东西吗?
    • @CamJackson:FlowLayout 不允许您垂直排列,但 BoxLayout 可以。
    • 谢谢,看起来答案基本上是“寻找更好的布局!” :P
    • 差不多 :) 实际上答案是:1/ 在布局管理器中执行此操作 + 2/ 使用正确的布局管理器。
    【解决方案2】:

    我认为将按钮添加到面板并为面板设置空边框会更简单。

    【讨论】:

    • 这也可以。然后,面板上的边框将是蚀刻内、标题内、空白内(面板外侧的空间)内的空白。如果我的边框上有四层嵌套,我是不是“做错了”?
    • 多层是可以的。我什至会创建一个自定义组件 MyBorderedButton 扩展 JPanel 并在必要时使用它而不是按钮。
    • @StanislavL:我发现拥有一个实际上是 JPanel(而不是 Button 的子类)的 XXXButton 子类令人困惑。例如,将一个动作监听器附加到您的 MyBorderedButton 或内部的 Button?
    • 可以添加这样的方法,调用委托按钮的方法。
    • 当然——但这只是一个例子。如果您使用其他 JButton 函数和特性,您最终可能会在 MyBorderedButton 类中复制大部分 JButton API。
    猜你喜欢
    • 2017-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多