2016-01-06 14 views
2

我正在製作一個在窗口頂部有一個工具欄的Java應用程序。在此工具欄上有12個按鈕,但客戶希望其中一個按鈕的大小爲所有其他按鈕的大小的兩倍,如下所示。如何使1個JToolbar按鈕比其他更大?

我該如何做到這一點,以便一個大的工具欄按鈕重疊工具欄邊界的邊緣,但仍然表現得像它是工具欄的一部分?

Giant toolbar button in the middle

+0

我注意到有個JLayer類,我要看看我能不能用它做什麼,我需要:http://docs.oracle.com/javase/tutorial/uiswing/misc/jlayer .html –

回答

0

有實現這一目標的各種方式。 我建議的一種方法是創建一個擴展Button類的新類(因爲它們在工具欄中使用)。 在這個類中,您將創建一個構造函數,其參數爲「int width」&「int height」。 創建工具欄和它的按鈕時,只需將這兩個參數的值設置得大一些,然後再設置其他參數。

不要忘了傳遞參數給「的setSize()」中的按鈕類

+1

這將導致工具欄的大小適合最大的按鈕。他想要一個「重疊工具欄邊界邊緣」的按鈕。 – ArcticLord

+0

如果您創建一個擴展JButton的新類。然後創建一個新的按鈕對象時,將寬度和高度作爲參數。此按鈕應與工具欄的邊界重疊,因爲它正在工具欄頂部分層顯示。 – Guido

+0

佈局管理器將始終在父面板的邊界內繪製一個組件。組件不會重疊多個容器。 – camickr

1

方法不能添加一個按鈕,工具欄,並將它在工具欄的邊界之外擴展。如果Swing組件被繪製在其容器的邊界之外,那麼將會剪裁這些組件。

當一個黑客,你可以嘗試畫上的所有其他組件頂部的超大按鍵:

  1. 添加一個普通按鈕,工具欄,填補了工具欄的水平空間預留的空間您的超大按鈕的工具欄。

  2. 將GlassPane添加到框架中。

  3. 將超大尺寸的按鈕添加到玻璃窗格中。

  4. ComponentListener添加到常規按鈕並處理componentMoved()事件。無論何時產生事件,您都需要將超大尺寸的按鈕放置在玻璃板上,以便將其塗在常規按鈕的頂部。查看SwingUtilities課程。有一些方法可以讓您將點相對於不同的容器進行轉換。

相關問題