JFrame類的對(duì)象默認(rèn)布局:BorderLayout
- 夢(mèng)醒時(shí)分
- 其他知識(shí)
- 2024-11-14 00:07:01
- 1
關(guān)于JFrame與JPanel的布局管理器詳解:
在Java的圖形界面設(shè)計(jì)中,JFrame和JPanel分別具有默認(rèn)的布局管理器。JFrame默認(rèn)的布局管理器是BorderLayout,而JPanel則使用FlowLayout作為默認(rèn)布局管理器。
BorderLayout布局管理器可以將容器劃分為五個(gè)區(qū)域:北、南、東、西、中,每個(gè)區(qū)域可放置一個(gè)組件。這種布局方式適用于需要將容器劃分為不同區(qū)域的場(chǎng)景。
FlowLayout布局管理器具有指定的對(duì)齊方式和指定的水平和垂直間隙。它可以按照指定的方式排列容器中的組件,使其呈現(xiàn)流暢的布局效果。
BorderLayout邊界布局管理器在Java的Swing組件庫(kù)中占有重要地位。它將容器劃分為五個(gè)區(qū)域,組件可以被放置在這五個(gè)區(qū)域中的任意一個(gè)。當(dāng)向Borderlayout布局管理器的容器中添加組件時(shí),需要使用特定的方法,其中涉及組件的添加方式和位置的對(duì)象。
軟件包javax.swing提供了一組輕量級(jí)的組件,這些組件在所有平臺(tái)上的工作方式都相同。該軟件包還包括許多重要的接口和類,如Action、BoundedRangeModel、ButtonModel等。
接口方面,Action接口提供了ActionListener接口的有用擴(kuò)展,以便若干控件訪問(wèn)相同的功能。CellEditor接口定義了任何通用編輯器應(yīng)該實(shí)現(xiàn)的方法。而對(duì)于類,AbstractAction類提供了JFC Action接口的默認(rèn)實(shí)現(xiàn)。AbstractButton類定義了按鈕和菜單項(xiàng)的一般行為。
除了上述接口和類,還有許多其他的接口和類與Java的圖形界面設(shè)計(jì)緊密相關(guān),如ComboBoxEditor、ListModel、Scrollable等。這些接口和類為用戶提供了豐富的工具和功能,以便在Java應(yīng)用程序中創(chuàng)建功能強(qiáng)大且易于使用的圖形界面。
DefaultBoundedRangeModel:這是BoundedRangeModel的一般實(shí)現(xiàn)。
DefaultButtonModel:這是Button組件的數(shù)據(jù)模型的默認(rèn)實(shí)現(xiàn)。
DefaultCellEditor:這是表單元格和樹(shù)單元格的默認(rèn)編輯器。
DefaultComboBoxModel:這是組合框的默認(rèn)模型。
DefaultDesktopManager:這是DesktopManager的實(shí)現(xiàn)。
DefaultFocusManager:此類的焦點(diǎn)管理功能已被廢棄,建議使用1.4版本的focus API。
DefaultListCellRenderer:這是呈現(xiàn)列表中的一個(gè)項(xiàng)的渲染器。
DefaultListCellRenderer.UIResource:這是實(shí)現(xiàn)UIResource的DefaultListCellRenderer的子類。
DefaultListModel:這是以松散方式實(shí)現(xiàn)java.util.Vector API的模型,它支持1.1.x版本的java.util.Vector,沒(méi)有collection類支持,并且在發(fā)生更改時(shí)通知ListDataListener。
DefaultListSelectionModel:這是列表選擇的默認(rèn)數(shù)據(jù)模型。
DefaultSingleSelectionModel:這是SingleSelectionModel的一般實(shí)現(xiàn)。
FocusManager:從1.4版本的focus API開(kāi)始,此類已被廢棄。
GrayFilter:這是一個(gè)圖像過(guò)濾器,它通過(guò)將圖像轉(zhuǎn)換成灰度級(jí)圖像并增亮圖像中的像素來(lái)“禁用”圖像。
ImageIcon:這是Icon接口的實(shí)現(xiàn),它根據(jù)Image繪制Icon。
InputMap:InputMap提供輸入 *** (目前只使用KeyStroke)和Object之間的綁定。
InputVerifier:此類的用途是通過(guò)帶文本字段的GUI幫助客戶端支持流暢的焦點(diǎn)導(dǎo)航。
InternalFrameFocusTraversalPolicy:該FocusTraversalPolicy可以有選擇地提供確定JInternalFrame初始Component的算法。
JApplet:這是java.applet.Applet的擴(kuò)展版,它添加了對(duì)JFC/Swing組件架構(gòu)的支持。
JButton:這是“push”按鈕的實(shí)現(xiàn)。
JCheckBox:這是復(fù)選框的實(shí)現(xiàn),復(fù)選框是一個(gè)可以被選定和取消選定的項(xiàng),它將其狀態(tài)顯示給用戶。
JCheckBoxMenuItem:這是可以被選定或取消選定的菜單項(xiàng)。
JColorChooser:JColorChooser提供一個(gè)用于允許用戶操作和選擇顏色的控制器窗格。
JComboBox:將按鈕或可編輯字段與下拉列表組合的組件。
JComponent:這是除頂層容器外所有Swing組件的基類。
JDesktopPane:用于創(chuàng)建多文檔界面或虛擬桌面的容器。
JDialog:創(chuàng)建對(duì)話框窗口的主要類。
JEditorPane:可編輯各種內(nèi)容的文本組件。
JFileChooser:JFileChooser為用戶選擇文件提供了一種簡(jiǎn)單的機(jī)制。
JFormattedTextField:JFormattedTextField擴(kuò)展了JTextField,添加了對(duì)格式化任意值的支持,以及一旦用戶編輯了文本就檢索特定對(duì)象的支持。
JFormattedTextField.AbstractFormatter:JFormattedTextField所使用的AbstractFormatter實(shí)例,用于處理從Object到String和從String到Object的轉(zhuǎn)換。
JFormattedTextField.AbstractFormatterFactory:JFormattedTextField使用的AbstractFormatterFactory實(shí)例,用來(lái)獲得AbstractFormatter實(shí)例,依次使用該實(shí)例格式化各個(gè)值。
JFrame:java.awt.Frame的擴(kuò)展版本,該版本添加了對(duì)JFC/Swing組件架構(gòu)的支持。
JInternalFrame:提供很多本機(jī)窗體功能的輕量級(jí)對(duì)象,這些功能包括拖動(dòng)、關(guān)閉、變成圖標(biāo)、調(diào)整大小、標(biāo)題顯示和支持菜單欄。
JInternalFrame.JDesktopIcon:此組件表示JInternalFrame的圖標(biāo)化版本。
JLabel:用于短文本字符串或圖像或二者的顯示區(qū)。
JLayeredPane:JLayeredPane為JFC/Swing容器添加了深度,允許組件在需要時(shí)互相重疊。
JList:該組件允許用戶從列表中選擇一個(gè)或多個(gè)對(duì)象。
JMenu:菜單的實(shí)現(xiàn)是一個(gè)包含JMenuItem的彈出窗口,用戶選擇JMenuBar上的項(xiàng)時(shí)會(huì)顯示該JMenuItem。
JMenuBar:菜單欄的實(shí)現(xiàn)。
JMenuItem:菜單中的項(xiàng)的實(shí)現(xiàn)。
JOptionPane:JOptionPane有助于方便地彈出要求用戶提供值或向其發(fā)出通知的標(biāo)準(zhǔn)對(duì)話框。
JPanel:JPanel是一般輕量級(jí)容器。
JPasswordField:JPasswordField是一個(gè)輕量級(jí)組件,允許編輯一個(gè)單行文本,其視圖指示鍵入內(nèi)容,但不顯示原始字符。
JPopupMenu:彈出菜單的實(shí)現(xiàn),彈出菜單是一個(gè)可彈出并顯示一系列選項(xiàng)的小窗口。
JPopupMenu.Separator:彈出與菜單有關(guān)的分隔符。
JProgressBar:默認(rèn)顯示有界區(qū)間整數(shù)值的組件。
JScrollPane提供了一個(gè)輕量級(jí)組件的滾動(dòng)視圖,可實(shí)現(xiàn)靈活的數(shù)據(jù)展示。
JSeparator是一個(gè)通用組件,用于實(shí)現(xiàn)分隔線功能,通常用作菜單項(xiàng)之間的分隔符,將菜單項(xiàng)劃分為邏輯組,提高用戶體驗(yàn)。
JSlider是一個(gè)組件,允許用戶通過(guò)移動(dòng)滑塊在指定范圍內(nèi)選擇值,以圖形化的方式直觀展示數(shù)據(jù)。
JSpinner是一個(gè)輸入字段,用戶可以從有序序列中選擇一個(gè)數(shù)字或?qū)ο笾?,方便快捷?/p>
針對(duì)JSpinner的不同模型,如SpinnerDateModel、SpinnerListModel和SpinnerNumberModel等,JSpinner有多種編輯器,如DateEditor、ListEditor和NumberEditor等。
JSplitPane用于分隔兩個(gè)組件,實(shí)現(xiàn)面板布局的靈活調(diào)整。
JTabbedPane是一個(gè)切換組件,用戶可以通過(guò)單擊帶有標(biāo)題和/或圖標(biāo)的選項(xiàng)卡,在一組組件之間進(jìn)行切換,方便展示多組信息。
JTable用于顯示和編輯規(guī)則的二維表格數(shù)據(jù),方便進(jìn)行數(shù)據(jù)管理和展示。
JTextArea是一個(gè)多行文本區(qū)域,用于顯示純文本內(nèi)容。
JTextField是一個(gè)輕量級(jí)組件,允許用戶編輯單行文本,適用于簡(jiǎn)單的文本輸入場(chǎng)景。
JTextPane是一個(gè)文本組件,具有圖形化屬性標(biāo)記功能,可以展示豐富的文本內(nèi)容。
JToggleButton是一個(gè)具有兩種狀態(tài)的按鈕組件,方便實(shí)現(xiàn)開(kāi)關(guān)控制等功能。
對(duì)于JToolBar,它是一個(gè)用于顯示常用操作的組件,方便用戶快速訪問(wèn)常用功能。還有ToolBar的特定元素如Separator和ToolTip等。
JTree是一個(gè)控件,將分層數(shù)據(jù)集以輪廓形式展示,方便進(jìn)行數(shù)據(jù)管理和瀏覽。其中,DynamicUtilTreeNode可包裝各類數(shù)據(jù)并根據(jù)需求創(chuàng)建子樹(shù)節(jié)點(diǎn)。EmptySelectionModel則不允許選擇任何內(nèi)容。
JViewport是一個(gè)“視口”或“觀察孔”,用于查看基礎(chǔ)信息。
關(guān)于UI組件與布局的詳解
在Java的圖形化界面設(shè)計(jì)中,`UIDefaults.LazyInputMap`被廣泛應(yīng)用。其`createValue`方法將構(gòu)建一個(gè)`InputMap`,以優(yōu)化輸入處理。而`UIDefaults.ProxyLazyValue`則是一種實(shí)現(xiàn)延遲加載的`LazyValue`,能高效地處理實(shí)例類的創(chuàng)建過(guò)程。
`UIManager`作為類中重要的一環(huán),其作用是追蹤當(dāng)前的外觀和其默認(rèn)設(shè)置。這些設(shè)置能夠確保用戶界面的顯示和功能始終保持最佳狀態(tài)。`UIManager.LookAndFeelInfo`為配置菜單或初始化應(yīng)用程序提供了關(guān)于已安裝的LookAndFeel的詳細(xì)信息,使得界面更加貼合用戶的使用習(xí)慣。
關(guān)于布局管理,`ViewportLayout`是`JViewport`的默認(rèn)布局管理器,它負(fù)責(zé)管理組件在界面中的排列和位置。
再談及枚舉與異常:
`JTable.PrintMode`是一個(gè)枚舉,用于定義JTable的打印模式,使得打印操作更加靈活和多樣化。
而`UnsupportedLookAndFeelException`則是一個(gè)異常,當(dāng)用戶系統(tǒng)中不存在請(qǐng)求的外觀管理類時(shí),將拋出此異常,提醒開(kāi)發(fā)者檢查外觀管理類的存在性。
至于軟件包`javax.swing`的介紹:
此包提供了一組“輕量級(jí)”的組件,全部使用Java語(yǔ)言編寫(xiě)。這些組件的設(shè)計(jì)目的是在所有平臺(tái)上都能以相似的方式工作,從而提供一致的用戶體驗(yàn)。若想了解如何使用這些組件,建議參閱《The Java Tutorial》中的“Creating a GUI with JFC/Swing”部分。還有豐富的其他參考資料可供查閱。
接下來(lái)是布局管理器的具體說(shuō)明:
1、`JFrame`的默認(rèn)布局管理器是`BorderLayout`。這是一種邊框布局,它將容器劃分為五個(gè)區(qū)域:北、南、東、西、中。每個(gè)區(qū)域最多只能包含一個(gè)組件,并且組件的大小會(huì)隨著容器的改變而自動(dòng)調(diào)整。
2、而`JPanel`的默認(rèn)布局管理器則是`FlowLayout`。這種布局管理器可以創(chuàng)建新的流式布局,指定組件的對(duì)齊方式以及水平和垂直間隙,使得組件能夠按照一定的順序和間距進(jìn)行排列。
擴(kuò)展知識(shí)
BorderLayout邊界布局管理器是一種非常常用的布局管理器,它將容器劃分為東、南、西、北和中心五個(gè)區(qū)域。當(dāng)向采用BorderLayout的容器中添加組件時(shí),需要使用特定的方法并指定組件的位置。而B(niǎo)roadlayout邊界布局管理器在改變?nèi)萜鞔笮r(shí),會(huì)保持North和South區(qū)域的高度不變,調(diào)整其他區(qū)域的大小和位置,以保持界面的平衡和美觀。