AI賦能Java語言編程:從入門到高階 課件 第十章 Swing組件_第1頁(yè)
AI賦能Java語言編程:從入門到高階 課件 第十章 Swing組件_第2頁(yè)
AI賦能Java語言編程:從入門到高階 課件 第十章 Swing組件_第3頁(yè)
AI賦能Java語言編程:從入門到高階 課件 第十章 Swing組件_第4頁(yè)
AI賦能Java語言編程:從入門到高階 課件 第十章 Swing組件_第5頁(yè)
已閱讀5頁(yè),還剩78頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Swing組件Swingcomponent第十章目錄0102030405窗口按鈕標(biāo)簽組合框列表0106文本組件07菜單組件08對(duì)話框0109定制組件樣式01窗口10.1窗口JFrame是JavaSwing庫(kù)中的“骨架”,支撐著整個(gè)GUI應(yīng)用程序。它扮演著窗口的角色,給予用戶一個(gè)可視化的舞臺(tái),讓應(yīng)用程序與用戶進(jìn)行“對(duì)話”。在這舞臺(tái)之上,可以添加各種Swing組件,如按鈕、文本框、列表等,讓應(yīng)用程序變得更加豐富多彩。JFrame的主要功能包括:1.創(chuàng)建和管理窗口:JFrame可以用來創(chuàng)建一個(gè)新的窗口,并控制其大小、位置和關(guān)閉行為。2.添加組件:可以在JFrame中添加各種Swing組件,如按鈕、文本框、列表等,以實(shí)現(xiàn)用戶交互。3.處理事件:JFrame可以處理各種事件,如窗口事件、鍵盤事件、鼠標(biāo)事件等,以響應(yīng)用戶的操作。4.布局管理:JFrame可以使用布局管理器來管理組件的位置和大小,使得組件可以自動(dòng)適應(yīng)窗口的大小變化。10.1窗口以下是JFrame的運(yùn)用步驟:1.創(chuàng)建JFrame對(duì)象:要?jiǎng)?chuàng)建一個(gè)新的JFrame窗口,需要使用JFrame類的構(gòu)造方法,例如:

JFrameframe=newJFrame("WindowTitle");2.設(shè)置窗口屬性:可以使用JFrame類提供的方法來設(shè)置窗口的各種屬性,例如:setDefaultCloseOperation(intoperation):設(shè)置窗口關(guān)閉按鈕的行為,可以選擇EXIT_ON_CLOSE(退出程序)、DO_NOTHING_ON_CLOSE(不執(zhí)行任何操作)、HIDE_ON_CLOSE(隱藏窗口并停止程序運(yùn)行)等。setSize(intwidth,intheight):設(shè)置窗口的大小。setVisible(booleanvisible):設(shè)置窗口是否可見。3.添加組件:可以在JFrame窗口中添加各種Swing組件,例如按鈕、文本框、標(biāo)簽等。可以使用add()方法將組件添加到窗口中,例如:JButtonbutton=newJButton("Clickme");frame.add(button);10.1窗口4.設(shè)置布局管理器:布局管理器用于控制組件在窗口中的布局方式??梢允褂胹etLayout()方法設(shè)置布局管理器,例如:

frame.setLayout(newFlowLayout());5.處理事件:可以為JFrame窗口添加事件監(jiān)聽器,以便在用戶與窗口交互時(shí)執(zhí)行相應(yīng)的操作。例如,可以為窗口添加WindowListener,以便在窗口關(guān)閉時(shí)執(zhí)行特定的操作。6.啟動(dòng)事件調(diào)度線程(EventDispatchThread,EDT):在創(chuàng)建完JFrame窗口后,需要啟動(dòng)事件調(diào)度線程來處理用戶事件??梢允褂肧wingUtilities.invokeLater()方法啟動(dòng)事件調(diào)度線程,例如:SwingUtilities.invokeLater(newRunnable(){publicvoidrun(){createAndShowGUI();}});其中,createAndShowGUI()方法中包含了創(chuàng)建和顯示JFrame窗口的代碼。10.1窗口以下是使用JFrame創(chuàng)建一個(gè)簡(jiǎn)單窗口的Java代碼:importjavax.swing.JFrame;publicclassSimpleWindow{publicstaticvoidmain(String[]args){JFrameframe=newJFrame("SimpleWindow");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(300,200);frame.setVisible(true);}}importjavax.swing.JFrame:這行代碼導(dǎo)入了JavaSwing庫(kù)中的JFrame類。JFrame是用于創(chuàng)建窗口的類。JFrameframe=newJFrame("SimpleWindow"):創(chuàng)建了一個(gè)新的JFrame對(duì)象,并命名為“SimpleWindow”。這個(gè)對(duì)象表示一個(gè)窗口,標(biāo)題為“SimpleWindow”。frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE):設(shè)置窗口的默認(rèn)關(guān)閉操作為退出程序。當(dāng)用戶點(diǎn)擊窗口的關(guān)閉按鈕時(shí),程序會(huì)結(jié)束運(yùn)行。frame.setSize(300,200):設(shè)置窗口的大小為300像素寬和200像素高。frame.setVisible(true):設(shè)置窗口為可見狀態(tài)。如果這行代碼被注釋掉或不存在,窗口將不會(huì)被顯示。10.1窗口

這段代碼創(chuàng)建了一個(gè)名為“SimpleWindow”的窗口,設(shè)置了默認(rèn)關(guān)閉操作為退出程序,窗口大小為300x200像素,并使窗口可見。效果如圖10-1所示:圖10-1“SimpleWindow”的窗口

單個(gè)窗口未免有些單調(diào),JavaSwing庫(kù)還提供了許多其他組件,用于構(gòu)建豐富多彩的用戶界面。02按鈕10.2.1普通按鈕JButton是Swing組件中的多功能按鈕,它融合了文本、圖像和事件處理于一身。它既可展現(xiàn)優(yōu)雅的外觀,又可響應(yīng)各種用戶操作,是布局管理中的得力助手。JButton的一些主要特點(diǎn):文本和圖像的組合:JButton可以包含文本和圖像,通過構(gòu)造函數(shù)的不同參數(shù),可以創(chuàng)建不同形式的按鈕。事件處理:JButton支持多種事件,如點(diǎn)擊事件、鍵盤事件等??梢酝ㄟ^添加事件監(jiān)聽器來處理這些事件,并在事件發(fā)生時(shí)執(zhí)行相應(yīng)的代碼。自定義外觀:可以通過設(shè)置屬性來改變JButton的外觀,例如顏色、字體和邊框樣式等。布局管理:JButton可以作為其他容器組件的子組件,并使用布局管理器來管理其位置和大小。我們常常能在各種各樣的窗口中看到各種按鈕,那么如何創(chuàng)造一個(gè)屬于自己的按鈕呢?10.2按鈕10.2.1普通按鈕JButton的一些常用構(gòu)造函數(shù):JButton():創(chuàng)建一個(gè)空的按鈕。JButton(Stringtext):創(chuàng)建一個(gè)包含指定文本的按鈕。JButton(Iconicon):創(chuàng)建一個(gè)包含指定圖標(biāo)的按鈕。JButton(Stringtext,Iconicon):創(chuàng)建一個(gè)包含文本和圖標(biāo)的按鈕。

除了構(gòu)造函數(shù)之外,JButton類還提供了一些常用方法來設(shè)置按鈕的屬性和處理事件,例如addActionListener()、setActionCommand()、getIcon()等。10.2按鈕10.2.1普通按鈕以下是一個(gè)簡(jiǎn)單的JButton應(yīng)用例子:importjavax.swing.*;publicclassSimpleJButton{publicstaticvoidmain(String[]args){//創(chuàng)建一個(gè)新的JFrame窗口

JFrameframe=newJFrame("SimpleJButton");//設(shè)置窗口的默認(rèn)關(guān)閉操作為退出程序

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//創(chuàng)建一個(gè)新的JButton按鈕

JButtonbutton=newJButton("Clickme");//將按鈕添加到窗口中

frame.getContentPane().add(button);//設(shè)置窗口的大小并使其可見

frame.setSize(300,200);frame.setVisible(true);}}10.2按鈕10.2.1普通按鈕JButtonbutton=newJButton("Clickme"):創(chuàng)建一個(gè)新的JButton按鈕,并設(shè)置其文本為"Clickme"。frame.getContentPane().add(button):將按鈕添加到窗口的內(nèi)容窗格中。frame.setSize(300,200):設(shè)置窗口的大小為300像素寬和200像素高。效果如圖10-2所示:10.2按鈕圖10-2“JButton”10.2.2切換按鈕JToggleButton在Swing組件中,就如同一個(gè)紅綠燈。當(dāng)用戶點(diǎn)擊它時(shí),它就變成綠燈,使車輛開始通行,進(jìn)入選中狀態(tài);再次點(diǎn)擊,它就變成紅燈,禁止車輛通行,取消選中狀態(tài)。通過它的“開關(guān)”功能,JToggleButton在用戶界面中扮演著重要的角色,方便用戶進(jìn)行選擇和切換操作。10.2按鈕10.2.2切換按鈕以下是一個(gè)簡(jiǎn)單的JToggleButton應(yīng)用例子:importjavax.swing.*;publicclassSimpleJToggleButton{publicstaticvoidmain(String[]args){//創(chuàng)建一個(gè)新的JFrame窗口

JFrameframe=newJFrame("SimpleJToggleButton");//設(shè)置窗口的默認(rèn)關(guān)閉操作為退出程序

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//創(chuàng)建一個(gè)新的JToggleButton按鈕

JToggleButtontoggleButton=newJToggleButton("Clickme");//將按鈕添加到窗口中

frame.getContentPane().add(toggleButton);//設(shè)置窗口的大小并使其可見

frame.setSize(300,200);frame.setVisible(true);}}JToggleButtontoggleButton=newJToggleButton("Clickme"):創(chuàng)建一個(gè)新的JToggleButton按鈕,并設(shè)置其文本為"Clickme"。frame.getContentPane().add(toggleButton):將按鈕添加到窗口的內(nèi)容窗格中。10.2按鈕10.2.3單選按鈕

在現(xiàn)實(shí)生活中,選擇題通常有一個(gè)選項(xiàng),每個(gè)選項(xiàng)都有一個(gè)單選按鈕與之關(guān)聯(lián)。用戶只能選擇一個(gè)選項(xiàng),即只能選中一個(gè)單選按鈕。這就好比在JavaGUI程序中,,用戶只能選擇一個(gè)JRadioButton。

當(dāng)用戶選擇某個(gè)JRadioButton時(shí),這個(gè)按鈕就會(huì)變亮,表示它被選中。如果用戶選擇了另一個(gè)JRadioButton,則原先選中的按鈕會(huì)變暗,而新的按鈕會(huì)變亮。這就好比在選擇題中,用戶選擇了一個(gè)選項(xiàng)后,該選項(xiàng)的單選按鈕就會(huì)變亮,而其他選項(xiàng)的單選按鈕會(huì)變暗。10.2按鈕10.2.3單選按鈕JRadioButton的運(yùn)用方法包括以下步驟:1.創(chuàng)建JRadioButton對(duì)象:使用JRadioButton構(gòu)造函數(shù)創(chuàng)建一個(gè)新的單選按鈕??梢灾付ò粹o的文本作為參數(shù),例如:JRadioButtonradioButton=newJRadioButton("Option");2.添加到ButtonGroup:將JRadioButton添加到一個(gè)ButtonGroup中,以確保同一組中的單選按鈕只能選擇一個(gè)。這可以通過調(diào)用ButtonGroup的add方法實(shí)現(xiàn),例如:ButtonGroupgroup=newButtonGroup();group.add(radioButton);3.添加到容器中:將JRadioButton添加到GUI容器中,例如JPanel或JFrame,以便在屏幕上顯示它。這可以通過調(diào)用容器的add方法實(shí)現(xiàn),例如:panel.add(radioButton);4.添加事件監(jiān)聽器:為JRadioButton添加事件監(jiān)聽器,以便在用戶單擊按鈕時(shí)執(zhí)行特定操作??梢允褂胊ddActionListener方法添加監(jiān)聽器,并實(shí)現(xiàn)ActionListener接口來定義事件處理程序。例如:radioButton.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){//執(zhí)行特定操作}});5.顯示GUI組件:最后,需要顯示GUI容器和其中的組件。這可以通過調(diào)用容器的setVisible方法實(shí)現(xiàn),例如:frame.setVisible(true);10.2按鈕10.2.3單選按鈕以下是一個(gè)簡(jiǎn)單的JRadioButton應(yīng)用例子:importjavax.swing.*;importjava.awt.*;publicclassJRadioButtonExample{publicstaticvoidmain(String[]args){//創(chuàng)建JFrame實(shí)例JFrameframe=newJFrame("JRadioButton示例");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(300,200);//創(chuàng)建面板JPanelpanel=newJPanel();panel.setLayout(newFlowLayout());//創(chuàng)建單選按鈕組ButtonGroupbuttonGroup=newButtonGroup();//創(chuàng)建單選按鈕JRadioButtonradioButton1=newJRadioButton("選項(xiàng)1");JRadioButtonradioButton2=newJRadioButton("選項(xiàng)2");10.2按鈕//添加到單選按鈕組buttonGroup.add(radioButton1);buttonGroup.add(radioButton2);//添加到面板panel.add(radioButton1);panel.add(radioButton2);//將面板添加到JFrame中frame.add(panel);frame.setVisible(true);}}10.2.3單選按鈕ButtonGroupbuttonGroup=newButtonGroup():創(chuàng)建一個(gè)新的ButtonGroup實(shí)例,它是一個(gè)單選按鈕組,這意味著用戶只能選擇一個(gè)按鈕。JRadioButtonradioButton1=newJRadioButton("選項(xiàng)1"):創(chuàng)建一個(gè)新的JRadioButton(單選按鈕)實(shí)例,并設(shè)置其標(biāo)簽為“選項(xiàng)1”。buttonGroup.add(radioButton1):將第一個(gè)單選按鈕添加到單選按鈕組中。panel.add(radioButton1):將第一個(gè)單選按鈕添加到面板中。10.2按鈕10.2.3單選按鈕例10.1超市提供了男士專用的洗發(fā)水和女士專用的洗發(fā)水,請(qǐng)使用Swing組件中JRadioButton創(chuàng)造一個(gè)選擇界面幫助客戶們選擇。10.2按鈕10.2.3單選按鈕使用ChatGPT編寫的代碼如下:importjavax.swing.*;importjava.awt.*;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;publicclassShampooSelector{privateJFrameframe;privateJRadioButtonmenShampooButton,womenShampooButton;privateJLabelresultLabel;publicShampooSelector(){frame=newJFrame("洗發(fā)水選擇器");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(300,200);//創(chuàng)建面板來放置組件

JPanelpanel=newJPanel();frame.add(panel);//創(chuàng)建和添加男性專用洗發(fā)水的單選按鈕

menShampooButton=newJRadioButton("男士專用洗發(fā)水");panel.add(menShampooButton);//創(chuàng)建和添加女性專用洗發(fā)水的單選按鈕

womenShampooButton=newJRadioButton("女士專用洗發(fā)水");panel.add(womenShampooButton);10.2按鈕10.2.3單選按鈕//創(chuàng)建一個(gè)標(biāo)簽來顯示結(jié)果

resultLabel=newJLabel("請(qǐng)選擇洗發(fā)水");panel.add(resultLabel);//創(chuàng)建一個(gè)按鈕來處理選擇事件

JButtonselectButton=newJButton("選擇");panel.add(selectButton);//添加監(jiān)聽器來處理選擇事件

selectButton.addActionListener(newActionListener(){@OverridepublicvoidactionPerformed(ActionEvente){//檢查哪個(gè)單選按鈕被選中

if(menShampooButton.isSelected()){resultLabel.setText("您選擇了男士專用洗發(fā)水");}elseif(womenShampooButton.isSelected()){resultLabel.setText("您選擇了女士專用洗發(fā)水");}else{resultLabel.setText("請(qǐng)選擇一個(gè)選項(xiàng)");}}});frame.setVisible(true);}10.2按鈕publicstaticvoidmain(String[]args){SwingUtilities.invokeLater(newRunnable(){@Overridepublicvoidrun(){newShampooSelector();//創(chuàng)建并顯示窗口和組件

}});}}10.2.4復(fù)選按鈕10.2按鈕JCheckBox用于創(chuàng)建一個(gè)復(fù)選框。用戶可以通過選中或取消選中復(fù)選框來選擇或取消選擇某個(gè)選項(xiàng)。

在Java中,可以使用JCheckBox類創(chuàng)建復(fù)選框?qū)ο?,并通過構(gòu)造函數(shù)設(shè)置文本、圖標(biāo)等屬性。還可以使用JCheckBox的常用方法來獲取和設(shè)置其狀態(tài)以及標(biāo)簽。當(dāng)JCheckBox被選中或清除時(shí),將發(fā)生一個(gè)事件,可以使用ActionListener來捕獲這個(gè)事件。10.2.4復(fù)選按鈕10.2按鈕以下是使用JCheckBox的基本步驟:1.導(dǎo)入必要的包:importjavax.swing.*;2.創(chuàng)建JCheckBox對(duì)象:JCheckBoxcheckBox=newJCheckBox("復(fù)選框文本");3.將JCheckBox添加到容器中:panel.add(checkBox);4.可以為JCheckBox添加ActionListener來監(jiān)聽其事件:checkBox.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){if(checkBox.isSelected()){//選中事件處理代碼

}else{//未選中事件處理代碼

}}});5.顯示組件:如果使用JFrame作為容器,可以使用以下代碼顯示組件:frame.setVisible(true);10.2.4復(fù)選按鈕10.2按鈕這里有一個(gè)簡(jiǎn)單的JCheckBox應(yīng)用例子:importjavax.swing.*;importjava.awt.*;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;publicclassJCheckBoxExample{privateJFrameframe;privateJCheckBoxcheckBox;privateJLabellabel;publicstaticvoidmain(String[]args){EventQueue.invokeLater(()->{try{JCheckBoxExamplewindow=newJCheckBoxExample();window.frame.setVisible(true);}catch(Exceptione){e.printStackTrace();}});}publicJCheckBoxExample(){initialize();}privatevoidinitialize(){frame=newJFrame();frame.setBounds(100,100,250,150);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.getContentPane().setLayout(null);checkBox=newJCheckBox("Checkme");checkBox.setBounds(50,50,100,25);frame.getContentPane().add(checkBox);label=newJLabel("");label.setBounds(50,100,100,25);frame.getContentPane().add(label);checkBox.addActionListener(newActionListener(){@OverridepublicvoidactionPerformed(ActionEvente){if(checkBox.isSelected()){label.setText("Checked");}else{label.setText("Unchecked");}}});}}10.2.4復(fù)選按鈕10.2按鈕這里有一個(gè)簡(jiǎn)單的JCheckBox應(yīng)用例子:importjavax.swing.*;importjava.awt.*;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;publicclassJCheckBoxExample{privateJFrameframe;privateJCheckBoxcheckBox;privateJLabellabel;publicstaticvoidmain(String[]args){EventQueue.invokeLater(()->{try{JCheckBoxExamplewindow=newJCheckBoxExample();window.frame.setVisible(true);}catch(Exceptione){e.printStackTrace();}});}publicJCheckBoxExample(){initialize();}privatevoidinitialize(){frame=newJFrame();frame.setBounds(100,100,250,150);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.getContentPane().setLayout(null);checkBox=newJCheckBox("Checkme");checkBox.setBounds(50,50,100,25);frame.getContentPane().add(checkBox);label=newJLabel("");label.setBounds(50,100,100,25);frame.getContentPane().add(label);checkBox.addActionListener(newActionListener(){@OverridepublicvoidactionPerformed(ActionEvente){if(checkBox.isSelected()){label.setText("Checked");}else{label.setText("Unchecked");}}});}}10.2.4復(fù)選按鈕10.2按鈕checkBox=newJCheckBox("Checkme"):創(chuàng)建一個(gè)新的復(fù)選框,標(biāo)簽為“Checkme”。checkBox.setBounds(50,50,100,25):設(shè)置復(fù)選框的位置和大小。checkBox.addActionListener(newActionListener():為復(fù)選框添加一個(gè)動(dòng)作監(jiān)聽器,以便響應(yīng)用戶的操作。

10.2.4復(fù)選按鈕10.2按鈕例10.2使用JCheckBox組件來允許用戶選擇他們喜歡的水果(蘋果、香蕉或橙子)。10.2.4復(fù)選按鈕10.2按鈕引導(dǎo)ChatGPT編寫的代碼如下所示:importjavax.swing.*;importjava.awt.*;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;publicclassFruitSelectionApp{privateJFrameframe;privateJCheckBoxappleCheckBox,bananaCheckBox,orangeCheckBox;privateJLabelresultLabel;publicFruitSelectionApp(){frame=newJFrame("水果選擇器");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(300,200);JPanelpanel=newJPanel();panel.setLayout(newFlowLayout());//創(chuàng)建復(fù)選框和標(biāo)簽

appleCheckBox=newJCheckBox("蘋果");bananaCheckBox=newJCheckBox("香蕉");orangeCheckBox=newJCheckBox("橙子");resultLabel=newJLabel("請(qǐng)選擇你喜歡的水果");

//將復(fù)選框和標(biāo)簽添加到面板中

panel.add(appleCheckBox);panel.add(bananaCheckBox);panel.add(orangeCheckBox);panel.add(resultLabel);frame.add(panel);frame.setVisible(true);//添加監(jiān)聽器來處理選擇事件

appleCheckBox.addActionListener(newActionListener(){@OverridepublicvoidactionPerformed(ActionEvente){if(appleCheckBox.isSelected()){resultLabel.setText("你選擇了蘋果");}else{resultLabel.setText("請(qǐng)選擇你喜歡的水果");}}});

10.2.4復(fù)選按鈕10.2按鈕bananaCheckBox.addActionListener(newActionListener(){@OverridepublicvoidactionPerformed(ActionEvente){if(bananaCheckBox.isSelected()){resultLabel.setText("你選擇了香蕉");}else{resultLabel.setText("請(qǐng)選擇你喜歡的水果");}}});orangeCheckBox.addActionListener(newActionListener(){@OverridepublicvoidactionPerformed(ActionEvente){if(orangeCheckBox.isSelected()){resultLabel.setText("你選擇了橙子");}else{resultLabel.setText("請(qǐng)選擇你喜歡的水果");}}});}publicstaticvoidmain(String[]args){SwingUtilities.invokeLater(newRunnable(){@Overridepublicvoidrun(){newFruitSelectionApp();}});}}03標(biāo)簽10.3標(biāo)簽Swing中的JLabel,宛如一塊醒目的信息招牌,時(shí)刻傳遞著關(guān)鍵信息。在GUI的世界里,JLabel就如同那個(gè)不可或缺的信息傳遞者,用最直接的方式向用戶傳遞著必要的信息。開發(fā)者可以通過setText()和setIcon()方法,為其賦予個(gè)性化的文本和圖標(biāo),使其更加生動(dòng)有趣。有了JLabel的陪伴,其他Swing組件仿佛擁有了鮮活的靈魂,一同演繹出絢麗多彩的GUI世界。10.3標(biāo)簽以下是一個(gè)簡(jiǎn)單的JLabel應(yīng)用例子:importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;publicclassSimpleSwingApp{publicstaticvoidmain(String[]args){//創(chuàng)建一個(gè)新的JFrame實(shí)例

JFrameframe=newJFrame("SimpleSwingApp");//設(shè)置窗口的默認(rèn)關(guān)閉操作(關(guān)閉窗口時(shí)退出程序)

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//設(shè)置窗口的大小

frame.setSize(300,200);//創(chuàng)建一個(gè)標(biāo)簽組件

JLabellabel=newJLabel("Hello,Swing!");//創(chuàng)建一個(gè)按鈕組件,并添加一個(gè)點(diǎn)擊事件監(jiān)聽器

JButtonbutton=newJButton("ClickMe");button.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){label.setText("Buttonclicked!");}});//將標(biāo)簽和按鈕添加到內(nèi)容面板中

frame.getContentPane().add(label,BorderLayout.NORTH);frame.getContentPane().add(button,BorderLayout.SOUTH);

//使窗口可見

frame.setVisible(true);}}JLabellabel=newJLabel("Hello,Swing!"):創(chuàng)建一個(gè)標(biāo)簽組件,顯示文本"Hello,Swing!"。frame.getContentPane().add(label,BorderLayout.NORTH):將標(biāo)簽添加到窗口的內(nèi)容窗格的上方位置。04組合框10.4組合框JComboBox在Swing中,就如同一位細(xì)致入微的服務(wù)生。它為用戶提供了一系列的選項(xiàng),如同菜單上的各種菜品,供用戶挑選。用戶可以根據(jù)自己的喜好選擇一個(gè)或多個(gè)選項(xiàng),而JComboBox則準(zhǔn)確地記錄下用戶的每一個(gè)選擇。同時(shí),它還能監(jiān)聽選項(xiàng)的變化,及時(shí)傳遞給開發(fā)者相關(guān)的信息。

10.4組合框以下是一個(gè)簡(jiǎn)單的運(yùn)用JComboBox的例子:importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;publicclassComboBoxExample{privateJFrameframe;privateJLabellabel;privateJComboBox<String>comboBox;publicstaticvoidmain(String[]args){EventQueue.invokeLater(()->{try{ComboBoxExamplewindow=newComboBoxExample();window.frame.setVisible(true);}catch(Exceptione){e.printStackTrace();}});}publicComboBoxExample(){initialize();}privatevoidinitialize(){frame=newJFrame();frame.setBounds(100,100,250,150);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.getContentPane().setLayout(null);label=newJLabel("Selectanoption:");label.setBounds(10,20,80,25);frame.getContentPane().add(label);comboBox=newJComboBox<>(newString[]{"Option1","Option2","Option3"});comboBox.setBounds(100,20,120,25);frame.getContentPane().add(comboBox);comboBox.addActionListener(newActionListener(){@OverridepublicvoidactionPerformed(ActionEvente){StringselectedItem=(String)comboBox.getSelectedItem();System.out.println("Selected:"+selectedItem);}});}}10.4組合框EventQueue.invokeLater():使用EventQueue的invokeLater()方法來確保GUI組件在事件調(diào)度線程中被創(chuàng)建和更新。try:開始一個(gè)try塊來捕獲可能發(fā)生的異常。ComboBoxExamplewindow=newComboBoxExample():創(chuàng)建一個(gè)新的ComboBoxExample對(duì)象。window.frame.setVisible(true):使窗口可見。catch(Exceptione):捕獲異常。e.printStackTrace():打印異常的堆棧跟蹤。comboBox=newJComboBox<>(newString[]{"Option1","Option2","Option3"}):創(chuàng)建一個(gè)下拉組合框,包含三個(gè)選項(xiàng)。comboBox.setBounds(100,20,120,25):設(shè)置組合框的位置和大小。frame.getContentPane().add(comboBox):將組合框添加到窗口的內(nèi)容面板中。comboBox.addActionListener(newActionListener():為組合框添加一個(gè)動(dòng)作監(jiān)聽器,以便在選項(xiàng)被選擇時(shí)執(zhí)行操作。10.4組合框

例10.3學(xué)校想要學(xué)生們?cè)跀?shù)學(xué)、物理、化學(xué)、計(jì)算機(jī)這四科中選擇一門學(xué)科安排學(xué)習(xí)社團(tuán),請(qǐng)使用ComboBox創(chuàng)建一個(gè)學(xué)科選擇界面。10.4組合框引導(dǎo)ChatGPT編寫結(jié)果如下:importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;publicclassSubjectSelectionExample{privateJFrameframe;privateJLabellabel;privateJComboBox<String>comboBox;publicSubjectSelectionExample(){frame=newJFrame("學(xué)科選擇界面");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(300,200);label=newJLabel("請(qǐng)選擇一個(gè)學(xué)科:");comboBox=newJComboBox<>(newString[]{"數(shù)學(xué)","物理","化學(xué)","計(jì)算機(jī)"});comboBox.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){StringselectedItem=comboBox.getSelectedItem().toString();label.setText("你選擇了");}});frame.setLayout(newFlowLayout());frame.add(label);frame.add(comboBox);frame.setVisible(true);}publicstaticvoidmain(String[]args){SwingUtilities.invokeLater(newRunnable(){publicvoidrun(){newSubjectSelectionExample();}});}}05列表10.5列表Swing組件中的列表(JList)就像一個(gè)超市的貨架,上面擺滿了各種商品供顧客選擇。這些商品就是列表中的選項(xiàng),而顧客則是用戶。顧客可以根據(jù)自己的需求,在貨架上挑選需要的商品。這個(gè)貨架還配備了垂直和水平滾動(dòng)條,就像JList支持的滾動(dòng)條一樣。當(dāng)商品數(shù)量太多放不下時(shí),滾動(dòng)條就派上了用場(chǎng),讓顧客能夠?yàn)g覽到所有商品。10.5列表以下是使用JList的基本步驟:1.導(dǎo)入必要的類:importjavax.swing.*;2.創(chuàng)建JList對(duì)象:可以通過以下兩種方式之一創(chuàng)建JList對(duì)象:(1)使用默認(rèn)模型(DefaultListModel):DefaultListModel<String>model=newDefaultListModel<>();JList<String>list=newJList<>(model);(2)使用自定義模型(ListModel):ListModel<String>model=newMyCustomListModel();JList<String>list=newJList<>(model);3.添加項(xiàng)目:可以使用DefaultListModel的方法向列表中添加項(xiàng)目,例如:model.addElement("項(xiàng)目1");model.addElement("項(xiàng)目2");model.addElement("項(xiàng)目3");10.5列表4.添加監(jiān)聽器:可以使用ListSelectionListener添加監(jiān)聽器來處理用戶選擇列表中的項(xiàng)目。例如:list.addListSelectionListener(newListSelectionListener(){publicvoidvalueChanged(ListSelectionEventevent){//處理用戶選擇的項(xiàng)目邏輯代碼

}});5.添加JList到容器中:將JList添加到JScrollPane或其他容器中,然后將其添加到GUI布局中。例如:JScrollPanescrollPane=newJScrollPane(list);frame.add(scrollPane);6.最后,調(diào)用JFrame的setVisible()方法顯示GUI。例如:frame.setVisible(true);10.5列表以下是一個(gè)簡(jiǎn)單的運(yùn)用JList的例子:importjavax.swing.*;importjava.awt.*;publicclassJListExample{publicstaticvoidmain(String[]args){SwingUtilities.invokeLater(()->{JFrameframe=newJFrame("JListExample");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(300,200);String[]items={"Item1","Item2","Item3","Item4"};JList<String>list=newJList<>(items);list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);JScrollPanescrollPane=newJScrollPane(list);frame.getContentPane().add(scrollPane,BorderLayout.CENTER);frame.setVisible(true);});}}10.5列表String[]items={"Item1","Item2","Item3","Item4"}:創(chuàng)建一個(gè)字符串?dāng)?shù)組,包含四個(gè)元素,這些元素將作為列表中的選項(xiàng)。JList<String>list=newJList<>(items):使用上面創(chuàng)建的字符串?dāng)?shù)組初始化一個(gè)新的JList對(duì)象。list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION):設(shè)置列表的選擇模式為單選,這意味著一次只能選擇一個(gè)選項(xiàng)。JScrollPanescrollPane=newJScrollPane(list):創(chuàng)建一個(gè)新的JScrollPane對(duì)象,并將列表作為其內(nèi)容。這將使列表具有滾動(dòng)條,以便用戶可以滾動(dòng)查看所有選項(xiàng)。frame.getContentPane().add(scrollPane,BorderLayout.CENTER):將滾動(dòng)窗格添加到窗口的內(nèi)容窗格中,并指定其布局位置為BorderLayout.CENTER。

06文本組件10.6.1文本域10.6文本組件文本域(JTextField)是一個(gè)用于單行文本輸入的文本框組件,可以看作是一個(gè)寫字板,用戶可以在其中輸入單行文本。以下是一個(gè)簡(jiǎn)單的運(yùn)用JTextField的例子:importjavax.swing.*;publicclassSimpleJTextFieldExample{publicstaticvoidmain(String[]args){//創(chuàng)建JFrame容器

JFrameframe=newJFrame("JTextFieldExample");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(300,200);//創(chuàng)建JTextField組件

JTextFieldtextField=newJTextField();textField.setBounds(50,50,200,30);//設(shè)置位置和大小

//將JTextField添加到JFrame中

frame.getContentPane().add(textField);//顯示JFrame容器

frame.setVisible(true);}}JTextFieldtextField=newJTextField():

創(chuàng)建一個(gè)新的JTextField對(duì)象。textField.setBounds(50,50,200,30):設(shè)置文本框的位置和大小。這里將其放置在(50,50)的位置,寬度為200像素,高度為30像素。frame.getContentPane().add(textField):

將文本框添加到JFrame的內(nèi)容窗格中。10.6.2文本區(qū)10.6文本組件文本區(qū)(JTextArea)是一個(gè)用于多行文本輸入和顯示的文本區(qū)域組件,可以看作是一塊大的寫字板,用戶可以在上面輸入多行文字。以下是一個(gè)簡(jiǎn)單的運(yùn)用JTextArea的例子:importjavax.swing.*;publicclassSimpleJTextAreaExample{publicstaticvoidmain(String[]args){//創(chuàng)建JFrame容器

JFrameframe=newJFrame("JTextAreaExample");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(300,200);//創(chuàng)建JTextArea組件

JTextAreatextArea=newJTextArea();textArea.setBounds(50,50,200,100);//設(shè)置位置和大小

//將JTextArea添加到JFrame中

frame.getContentPane().add(textArea);//顯示JFrame容器

frame.setVisible(true);}}JTextAreatextArea=newJTextArea():創(chuàng)建一個(gè)新的JTextArea對(duì)象。textArea.setBounds(50,50,200,100):設(shè)置文本區(qū)域的位置和大小。這里將其放置在(50,50)的位置,寬度為200像素,高度為100像素。frame.getContentPane().add(textArea):將文本區(qū)域添加到JFrame的內(nèi)容窗格中。10.6.3文本編輯器10.6文本組件文本編輯器(JTextPane):一個(gè)支持格式化文本的文本組件,具有簡(jiǎn)單的文本編輯功能。它不僅允許用戶輸入文本,還可以設(shè)置字體、顏色等格式,為用戶提供了更大的創(chuàng)作空間。以下是一個(gè)簡(jiǎn)單的運(yùn)用JTextPane的例子:importjavax.swing.*;importjavax.swing.text.*;publicclassJTextPaneExample{publicstaticvoidmain(String[]args){//創(chuàng)建JFrame實(shí)例

JFrameframe=newJFrame("JTextPane示例");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(400,300);//創(chuàng)建JTextPane實(shí)例

JTextPanetextPane=newJTextPane();textPane.setContentType("text/plain");//設(shè)置內(nèi)容類型為純文本

textPane.setText("這是一個(gè)簡(jiǎn)單的JTextPane示例。");//設(shè)置文本內(nèi)容

textPane.setEditable(false);//設(shè)置為不可編輯

//將JTextPane添加到JFrame中

frame.add(textPane);//顯示JFrameframe.setVisible(true);}}JTextPanetextPane=newJTextPane():創(chuàng)建一個(gè)新的JTextPane對(duì)象,該對(duì)象表示文本編輯區(qū)域。textPane.setContentType("text/plain"):設(shè)置文本內(nèi)容類型為純文本,這意味著文本將不會(huì)以富文本格式顯示。textPane.setText("這是一個(gè)簡(jiǎn)單的JTextPane示例。"):設(shè)置JTextPane的初始文本內(nèi)容為“這是一個(gè)簡(jiǎn)單的JTextPane示例?!薄extPane.setEditable(false):設(shè)置JTextPane為不可編輯,這意味著用戶不能在其中輸入或修改文本。frame.add(textPane):將JTextPane添加到窗口中,使其可見。10.6.4密碼框10.6文本組件密碼框(JPasswordField)是一個(gè)用于密碼輸入的文本框組件。它是一款“保密筆記本”,與JTextField類似,但用于輸入密碼,隱藏輸入內(nèi)容。importjavax.swing.*;publicclassJPasswordFieldExample{publicstaticvoidmain(String[]args){//創(chuàng)建JFrame實(shí)例

JFrameframe=newJFrame("JPasswordField示例");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(300,200);//創(chuàng)建JPasswor

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論