Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使1个JToolbar按钮比其他按钮大?_Java_Button_Overlap_Jtoolbar - Fatal编程技术网

Java 如何使1个JToolbar按钮比其他按钮大?

Java 如何使1个JToolbar按钮比其他按钮大?,java,button,overlap,jtoolbar,Java,Button,Overlap,Jtoolbar,我正在制作一个在窗口顶部有工具栏的Java应用程序。此工具栏上有12个按钮,但客户希望其中一个按钮的大小为所有其他按钮的2倍,如下所示 我如何才能做到这一点,使一个大工具栏按钮与工具栏边界的边缘重叠,但其行为仍像工具栏的一部分 实现这一目标有多种方法。 我建议的一种方法是创建一个扩展Button类的新类(因为它们在工具栏中使用)。 在这个类中,您使用参数“intwidth”和“intheight”创建一个构造函数。 创建工具栏及其按钮时,只需将这两个参数的值设置为大于其他参数的值 不要忘记将参数

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

我如何才能做到这一点,使一个大工具栏按钮与工具栏边界的边缘重叠,但其行为仍像工具栏的一部分


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


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

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

作为黑客,您可以尝试在所有其他组件的顶部绘制超大按钮:

  • 将常规按钮添加到工具栏以填充工具栏的水平空间,从而在工具栏上为超大按钮保留空间

  • 将玻璃窗格添加到框架中

  • 将您的超大按钮添加到玻璃窗格中

  • 向常规按钮添加一个
    ComponentListener
    ,并处理
    componentMoved()
    事件。无论何时生成事件,您都需要将您的超大按钮放置在玻璃窗格上,以便将其绘制在常规按钮的顶部。查看
    SwingUtilities
    类。有一些方法允许您转换相对于不同容器的点


  • 这将导致工具栏的大小适合最大的按钮。他想要一个“重叠工具栏边界边缘”的按钮。如果你创建一个扩展JButton的新类。然后在创建新按钮对象时,将宽度和高度作为参数。此按钮应与工具栏的边界重叠,因为它位于工具栏顶部。布局管理器将始终在父面板的边界内绘制组件。一个组件不会重叠多个容器。我注意到有一个JLayer类,我将看看是否可以使用它来完成我需要的任务: