Java圖形界面超實用使用教程
一、常用組件
1. JFrame
JFrame是Swing中最常用的頂級容器,它用于包含和管理其他Swing組件。JFrame提供了一些常用的方法,如setTitle()、setDefaultCloseOperation()、setResizable()、setVisible()等等,用于控制窗口的外觀和行為。
2. JPanel
JPanel是Swing中常用的容器組件,用于將其他Swing組件放置在一起,形成一個組件集合。JPanel可以嵌套在其他容器中,如JFrame、JDialog等等。
3. JLabel
JLabel是Swing中用于顯示文本或圖像的組件,它可以用于顯示靜態(tài)的提示信息或標簽等等。JLabel提供了一些常用的方法,如setText()、setIcon()、setHorizontalAlignment()等等,用于控制標簽的文本和圖像內(nèi)容以及對齊方式等。
4. JTextField
JTextField是Swing中用于接收單行文本輸入的組件,它可以用于輸入和顯示文本信息。JTextField提供了一些常用的方法,如setText()、getText()、setEditable()等等,用于控制文本框的內(nèi)容和可編輯性等。
5. JButton
JButton是Swing中用于響應(yīng)用戶單擊操作的組件,它可以用于觸發(fā)相應(yīng)的事件處理程序,如打開一個文件、執(zhí)行計算等等。JButton提供了一些常用的方法,如setText()、setMnemonic()、addActionListener()等等,用于控制按鈕的文本、快捷鍵和事件監(jiān)聽等。
6. JCheckBox
JCheckBox是Swing中用于提供復(fù)選框選項的組件,它可以用于讓用戶選擇多個選項。JCheckBox提供了一些常用的方法,如setText()、isSelected()、addItemListener()等等,用于控制復(fù)選框的文本和選中狀態(tài)以及事件監(jiān)聽等。
7. JRadioButton
JRadioButton是Swing中用于提供單選框選項的組件,它可以用于讓用戶從多個選項中選擇一個。JRadioButton提供了一些常用的方法,如setText()、isSelected()、addItemListener()等等,用于控制單選框的文本和選中狀態(tài)以及事件監(jiān)聽等。
8. JComboBox
JComboBox是Swing中用于提供下拉列表選項的組件,它可以用于讓用戶從多個選項中選擇一個。JComboBox提供了一些常用的方法,如addItem()、setSelectedIndex()、addActionListener()等等,用于控制下拉列表的選項和選中狀態(tài)以及事件監(jiān)聽等。
9. JList
JList是Swing中用于顯示列表項的組件,它可以用于顯示多個選項并允許用戶進行選擇。JList提供了一些常用的方法,如setListData()、getSelectedValue()、addListSelectionListener()等等,用于控制列表項的數(shù)據(jù)和選中值以及事件監(jiān)聽等。
(一)JPanel中常用方法
JPanel提供了一些常用的方法,如add()、remove()、setLayout()、getPreferredSize()等等,用于控制面板中的組件和布局方式以及尺寸等。下面是一些常用的方法介紹:
- add(Component comp)
該方法用于向面板中添加一個組件,其中 comp 表示要添加的組件。該方法還可以接受一個整數(shù)參數(shù),用于指定組件的索引位置。例如,panel.add(button)將向面板中添加一個按鈕組件。 - remove(Component comp)
該方法用于從面板中刪除一個組件,其中comp表示要刪除的組件。例如,panel.remove(button)將從面板中刪除一個按鈕組件。 - setLayout(LayoutManager manager)
該方法用于設(shè)置面板的布局管理器,其中manager表示要使用的布局管理器。例如,panel.setLayout(new BorderLayout())將設(shè)置面板的布局管理器為邊界布局管理器。 - getPreferredSize()
該方法用于獲取面板的首選大小,即面板的推薦尺寸。例如,Dimension size = panel.getPreferredSize()將獲取面板的首選大小,并將其存儲在一個Dimension對象中。
需要注意的是,JPanel默認使用流式布局管理器FlowLayout,該布局管理器按照添加順序排列組件,并根據(jù)組件的首選大小自動調(diào)整其位置和大小。如果需要使用其他布局管理器,需要通過setLayout()方法來設(shè)置。
另外,JPanel還可以使用setBorder()方法來設(shè)置面板的邊框樣式,使用setBackground()方法來設(shè)置面板的背景色等等。JPanel的靈活性和多功能性使得它成為Swing界面設(shè)計中不可或缺的一部分。
(二)使用JPanel的場景如下
- 實現(xiàn)復(fù)雜的布局
當需要將多個Swing組件組合在一起,并且需要進行復(fù)雜的布局時,可以使用JPanel。JPanel可以嵌套在其他容器中,如JFrame、JDialog等等,并且可以使用不同的布局管理器來控制子組件的位置和大小,以實現(xiàn)各種復(fù)雜的布局效果。 - 分組顯示相關(guān)組件
當需要將多個相關(guān)的Swing組件放置在一起,并對其進行分組顯示時,可以使用JPanel。例如,一個包含多個按鈕和標簽的設(shè)置面板,可以將按鈕和標簽分別放置在不同的JPanel中,并將它們嵌套在同一個容器中。 - 顯示動態(tài)的組件
當需要動態(tài)地添加、刪除或更改組件時,可以使用JPanel。JPanel提供了add()、remove()等方法,可以方便地添加和刪除子組件,并且可以使用repaint()方法來強制刷新面板中的所有組件,以實現(xiàn)動態(tài)的顯示效果。 - 實現(xiàn)重用的自定義組件
當需要創(chuàng)建可重用的自定義組件時,可以使用JPanel。JPanel可以作為自定義組件的基礎(chǔ)容器,可以將其他Swing組件放置在其中,并將其封裝為一個獨立的可重用組件,以方便在不同的應(yīng)用程序中進行復(fù)用。
總的來說,JPanel是Swing中常用的容器組件,用于將其他Swing組件放置在一起,形成一個組件集合。它可以嵌套在其他容器中,如JFrame、JDialog等等,并且可以用于實現(xiàn)復(fù)雜的布局、分組顯示相關(guān)組件、顯示動態(tài)的組件以及實現(xiàn)重用的自定義組件等等。
(三)常用布局管理器
Java提供了多種布局管理器,用于控制組件在容器中的排列方式。以下是一些常用的布局管理器:
1. BorderLayout
描述:將容器分成5個區(qū)域:北、南、東、西和中心,各個組件可以填充其中一個或多個區(qū)域。
使用場景:適合用于將組件分割成不同的區(qū)域。
代碼示例:
JFrame frame = new JFrame("BorderLayout Example"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLayout(new BorderLayout()); frame.add(new JButton("North"), BorderLayout.NORTH); frame.add(new JButton("South"), BorderLayout.SOUTH); frame.add(new JButton("East"), BorderLayout.EAST); frame.add(new JButton("West"), BorderLayout.WEST); frame.add(new JButton("Center"), BorderLayout.CENTER); frame.pack(); frame.setVisible(true);
2. FlowLayout
描述:按照添加組件的順序,從左往右依次排列組件,如果一行排不下就自動換行。
使用場景:適合用于流式布局,將組件一行一行地排列。
代碼示例:
JFrame frame = new JFrame("FlowLayout Example"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLayout(new FlowLayout()); frame.add(new JButton("Button 1")); frame.add(new JButton("Button 2")); frame.add(new JButton("Button 3")); frame.pack(); frame.setVisible(true); \``` ### 3. GridLayout **描述**:將容器分成指定的行數(shù)和列數(shù)的網(wǎng)格,組件按照順序填充到每個單元格中。 **使用場景**:適合用于按網(wǎng)格布局排列組件。 **代碼示例**: ```java JFrame frame = new JFrame("GridLayout Example"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLayout(new GridLayout(3, 2)); frame.add(new JButton("Button 1")); frame.add(new JButton("Button 2")); frame.add(new JButton("Button 3")); frame.add(new JButton("Button 4")); frame.add(new JButton("Button 5")); frame.add(new JButton("Button 6")); frame.pack(); frame.setVisible(true);
4. CardLayout
描述:將容器中的組件按照卡片的方式進行切換,每次只顯示其中一個組件。
使用場景:適合用于在多個組件之間進行切換。
代碼示例:
JFrame frame = new JFrame("CardLayout Example"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); CardLayout cardLayout = new CardLayout(); frame.setLayout(cardLayout); frame.add(new JLabel("Card 1"), "card1"); frame.add(new JLabel("Card 2"), "card2"); frame.pack(); frame.setVisible(true); // 切換到下一張卡片 cardLayout.next(frame.getContentPane());
5. BoxLayout
描述:將組件按照水平或垂直方向進行排列,可以指定每個組件的最小和最大尺寸。
使用場景:適合按照水平或垂直方向排列組件,并指定最小和最大尺寸。
代碼示例:
JFrame frame = new JFrame("BoxLayout Example"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.Y_AXIS)); frame.add(new JButton("Button 1")); frame.add(new JButton("Button 2")); frame.add(new JButton("Button 3")); frame.pack(); frame.setVisible(true);
6. GridBagLayout
描述:一種靈活的布局管理器,可以為組件指定行、列、寬度、高度、填充方式等屬性。
使用場景:適合用于實現(xiàn)更復(fù)雜的布局需求。
代碼示例:
JFrame frame = new JFrame("GridBagLayout Example"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLayout(new GridBagLayout()); GridBagConstraints constraints = new GridBagConstraints(); // 添加 Button 1 constraints.gridx = 0; constraints.gridy = 0; constraints.gridwidth = 1; constraints.gridheight = 1; constraints.fill = GridBagConstraints.HORIZONTAL; frame.add(new JButton("Button 1"), constraints); // 添加 Button 2 constraints.gridx = 1; constraints.gridy = 0; constraints.gridwidth = 1; constraints.gridheight = 1; constraints.fill = GridBagConstraints.HORIZONTAL; frame.add(new JButton("Button 2"), constraints); // 添加 Button 3 constraints.gridx = 0; constraints.gridy = 1; constraints.gridwidth = 2; constraints.gridheight = 1; constraints.fill = GridBagConstraints.HORIZONTAL; frame.add(new JButton("Button 3"), constraints); frame.pack(); frame.setVisible(true);
以上就是Java中常用的布局管理器。
二、常用事件處理響應(yīng)
Java的Listener是用于事件處理的一種機制,主要用于接收和處理用戶界面上的各種事件。下面介紹一些常用的Listener方法和接口:
- ActionListener接口:用于處理按鈕、菜單等組件的動作事件。
- MouseListener接口:用于處理鼠標事件,如鼠標單擊、鼠標移動等。
- KeyListener接口:用于處理鍵盤事件,如鍵盤按下、鍵盤釋放等。
- FocusListener接口:用于處理焦點事件,如組件獲得焦點、組件失去焦點等。
- ItemListener接口:用于處理復(fù)選框和單選按鈕的選擇事件。
- WindowListener接口:用于處理窗口事件,如窗口打開、窗口關(guān)閉等。
三、上面接口對應(yīng)的適配器(減少接口中方法的重寫)
在Java中,適配器類是一種實現(xiàn)某個接口但并不完全實現(xiàn)該接口的類。它可以作為接口的中間層,使得我們在實現(xiàn)接口方法時,只需要重寫自己需要的方法,而不需要全部重寫。常見的適配器類包括:
- MouseAdapter類:實現(xiàn)了MouseListener和MouseWheelListener接口,但其中的方法都是空實現(xiàn),方便我們使用時只重寫需要的方法。
- KeyAdapter類:實現(xiàn)了KeyListener接口,但其中的方法都是空實現(xiàn)我們使用時只重寫需要的方法。
- WindowAdapter類:實現(xiàn)了WindowListener接口和WindowFocusListener接口,但其中的方法都是空實現(xiàn),方便我們使用時只重寫需要的方法。
- ComponentAdapter類:實現(xiàn)了ComponentListener接口,但其中的方法都是空實現(xiàn),方便我們使用時只重寫需要的方法。
- ContainerAdapter類:實現(xiàn)了ContainerListener接口,但其中的方法都是空實現(xiàn),方便我們使用時只重寫需要的方法。
- FocusAdapter類:實現(xiàn)了FocusListener接口,但其中的方法都是空實現(xiàn),方便我們使用時只重寫需要的方法。
適配器類的作用是讓我們在實現(xiàn)接口的時候不必重寫全部的方法,而只需要重寫我們需要的方法。這樣能夠減少代碼的冗余,提高代碼的可讀性和可維護性。
四、常用函數(shù)方法
以下是一些在Java圖形界面編程中常用的函數(shù)方法:
1. setText()
setText()
方法用于設(shè)置組件內(nèi)的文字內(nèi)容??梢詰?yīng)用到諸如JTextField
、JButton
、JLabel
等組件上。
示例:設(shè)置JTextField
中的文本內(nèi)容。
JTextField text = new JTextField(); text.setText("請輸入");
此時,text文本框內(nèi)將顯示“請輸入”。
2. getText()
getText()方法用于提取組件內(nèi)的文字。通常用于獲取用戶在文本框中輸入的內(nèi)容。
示例:從JTextField中提取輸入的文本。
String input = text.getText();
3. add()
add()方法用于向容器(如JPanel和JFrame)中添加組件。
示例:向JPanel中添加一個按鈕。
JPanel panel = new JPanel(); JButton button = new JButton("點擊我"); panel.add(button);
4. 創(chuàng)建并設(shè)置基本的圖形界面
以下代碼展示了創(chuàng)建一個基本的圖形界面所需的必要步驟
// 創(chuàng)建一個JFrame窗口并設(shè)置標題 JFrame frame = new JFrame("圖形界面示例"); // 設(shè)置窗口大小 frame.setSize(450, 350); // 設(shè)置窗口關(guān)閉操作,關(guān)閉窗口時終止程序 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 在此處添加組件和設(shè)置布局管理器... // 設(shè)置窗口可見性,否則運行時看不到窗口 frame.setVisible(true);
總結(jié)
到此這篇關(guān)于Java圖形界面的文章就介紹到這了,更多相關(guān)Java圖形界面內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
微服務(wù)鏈路追蹤Spring Cloud Sleuth整合Zipkin解析
這篇文章主要為大家介紹了微服務(wù)鏈路追蹤Spring Cloud Sleuth整合Zipkin解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-02-02RestTemplate發(fā)送HTTP?GET請求使用方法詳解
這篇文章主要為大家介紹了關(guān)于RestTemplate發(fā)送HTTP?GET請求的使用方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家<BR>33+多多進步2022-03-03SpringBoot異步Async使用Future與CompletableFuture區(qū)別小結(jié)
本文主要介紹了SpringBoot異步Async使用Future與CompletableFuture區(qū)別小結(jié),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧2023-06-06servlet生命周期_動力節(jié)點Java學(xué)院整理
這篇文章主要為大家詳細介紹了servlet生命周期的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07Springmvc ResponseBody響應(yīng)json數(shù)據(jù)實現(xiàn)過程
這篇文章主要介紹了Springmvc ResponseBody響應(yīng)json數(shù)據(jù)實現(xiàn)過程,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友可以參考下2020-10-10PowerJob的AbstractScriptProcessor實現(xiàn)類工作流程源碼解讀
這篇文章主要為大家介紹了PowerJob的AbstractScriptProcessor源碼流程解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2024-01-01