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