【问题标题】:How to make 1 JToolbar button larger than the rest?如何使 1 个 JToolbar 按钮大于其他按钮?
【发布时间】:2016-01-06 14:09:00
【问题描述】:

我正在制作一个在窗口顶部有一个工具栏的 Java 应用程序。此工具栏上有 12 个按钮,但客户希望其中一个按钮的大小是所有其他按钮的 2 倍,如下所示。

我怎样才能做到这一点,以便一个大工具栏按钮与工具栏边界的边缘重叠,但仍然表现得像它是工具栏的一部分?

【问题讨论】:

标签: java swing jbutton overlap jtoolbar


【解决方案1】:

您不能将按钮添加到工具栏并使其超出工具栏的范围。也就是说,如果 Swing 组件绘制在其容器的边界之外,则会被剪裁。

作为 hack,您可以尝试在所有其他组件之上绘制超大按钮:

  1. 向工具栏添加一个常规按钮以填充工具栏的水平空间,从而为您的超大按钮保留工具栏上的空间。

  2. 将 GlassPane 添加到框架中。

  3. 将超大按钮添加到玻璃窗格中。

  4. ComponentListener 添加到常规按钮并处理componentMoved() 事件。每当生成事件时,您都需要将超大按钮放置在玻璃窗格上,以便将其绘制在常规按钮的顶部。查看SwingUtilities 课程。有一些方法可以让您相对于不同的容器转换点。

【讨论】:

    【解决方案2】:

    有多种方法可以实现这一目标。 我建议的一种方法是创建一个扩展 Button 类的新类(因为这些在工具栏中使用)。 在这个类中,您使用参数“int width”和“int height”创建一个构造函数。 创建工具栏及其按钮时,您只需将这两个参数的值设置为比其他参数大。

    不要忘记将参数传递给按钮类中的“setSize()”方法

    【讨论】:

    • 这将导致工具栏的大小适合最大按钮。他想要一个“与工具栏边界重叠”的按钮。
    • 如果你创建了一个扩展 JButton 的新类。然后在创建新按钮对象时,将宽度和高度作为参数。此按钮应与工具栏的边界重叠,因为它被分层放置在工具栏的顶部。
    • 布局管理器将始终在父面板的范围内绘制组件。一个组件不会重叠多个容器。
    猜你喜欢
    • 1970-01-01
    • 2022-11-02
    • 1970-01-01
    • 2017-11-15
    • 1970-01-01
    • 2018-04-11
    • 2013-04-06
    • 2012-06-02
    • 2019-08-01
    相关资源
    最近更新 更多