java的GUI實(shí)現(xiàn)簡(jiǎn)單切換界面
本文實(shí)例為大家分享了java GUI實(shí)現(xiàn)簡(jiǎn)單切換界面的具體代碼,供大家參考,具體內(nèi)容如下
1.關(guān)于java的GUI簡(jiǎn)單切換界面
在剛開(kāi)始學(xué)習(xí)java的gui界面設(shè)計(jì)的時(shí)候因?yàn)檎n本上沒(méi)有相關(guān)切換界面的介紹,所以如何進(jìn)行簡(jiǎn)單的一個(gè)界面切換困擾了我很久。因此我上網(wǎng)看了一些代碼,卻發(fā)現(xiàn)網(wǎng)上的大多數(shù)代碼都很繁瑣,仔細(xì)看下去感覺(jué)有許多冗余,雖然那些代碼達(dá)到了切換界面的目的,但也有其它一些我暫時(shí)用不上的功能。
簡(jiǎn)而言之,就是網(wǎng)上這部分的代碼不夠精簡(jiǎn)。于是我開(kāi)始單單把這一簡(jiǎn)單的功能剝離出來(lái)。廢話(huà)不多說(shuō)還是先上代碼吧,想說(shuō)的話(huà)都在注釋里。 視圖部分代碼:
import java.awt.BorderLayout; import javax.swing.*; public class View extends JFrame { ?? ?public void view() ?? ?{ ?? ??? ?ViewAction exwpAction=new ViewAction(this);//提前定義好動(dòng)作對(duì)象 ?? ??? ?setLayout(new BorderLayout());//使用BorderLayout布局 ?? ??? ?setSize(400,400);//設(shè)置界面大小 ?? ??? ?this.setTitle("視圖1界面");//設(shè)置界面名稱(chēng) ?? ??? ?JButton eb=new JButton("視圖2");//設(shè)置切換的按鈕eb ?? ??? ?JLabel tip_l=new JLabel("視圖1",0);//界面的內(nèi)容,這里用一個(gè)標(biāo)簽來(lái)替代具體內(nèi)容,后面的“0”是為了使這個(gè)標(biāo)簽居中對(duì)齊 ?? ??? ?eb.addActionListener(exwpAction);//為eb這個(gè)按鈕添加按鍵監(jiān)聽(tīng) ?? ??? ?add(tip_l, BorderLayout.CENTER);//將tip_l這個(gè)標(biāo)簽添加到布局的中間 ?? ??? ?add(eb, BorderLayout.SOUTH);//將按鈕eb添加到布局的下方 ?? ??? ?setVisible(true);//使視圖可視化 ?? ?} ?? ?public void view2() ?? ?{ ?? ??? ?ViewAction exwpAction=new ViewAction(this); ?? ??? ?setLayout(new BorderLayout()); ?? ??? ?setSize(400,400); ?? ??? ?this.setTitle("視圖2界面"); ?? ??? ?JButton eb=new JButton("視圖1"); ?? ??? ?JLabel tip_l=new JLabel("視圖2",0); ?? ??? ?eb.addActionListener(exwpAction); ?? ??? ?add(tip_l, BorderLayout.CENTER); ?? ??? ?add(eb, BorderLayout.SOUTH); ?? ??? ?setVisible(true); ?? ?} }
動(dòng)作部分代碼:
import java.awt.event.ActionEvent; public class ViewAction implements java.awt.event.ActionListener { ?? ?/* ?? ? * 這一部分是因?yàn)槲野呀缑婧蛣?dòng)作分開(kāi)成兩個(gè)類(lèi)來(lái)寫(xiě)了才需要進(jìn)行對(duì)象的傳遞如果動(dòng)作和界面在一個(gè)對(duì)象中寫(xiě)的話(huà)就不需要傳入對(duì)象了 ?? ? */ ?? ?View v=new View();//先定義一個(gè)View對(duì)象在切換界面的時(shí)候會(huì)使用到 ?? ?public ViewAction(View v)//將外界的View對(duì)象傳入這個(gè)類(lèi)里? ?? ?{ ?? ??? ?this.v=v; ?? ?} ?? ?public void actionPerformed(ActionEvent event) ?? ?{ ?? ?Object object=event.getSource();//創(chuàng)建事件源對(duì)象 ?? ?switch(event.getActionCommand()){ ?? ?//如果按下視圖1 ?? ?case "視圖1": ?? ??? ?//這里之所以先創(chuàng)建新視圖再關(guān)閉舊視圖是因?yàn)榉催^(guò)來(lái)的話(huà)我們會(huì)發(fā)現(xiàn)延遲看上去會(huì)有一些難受 ?? ??? ?new View().view();//new一個(gè)View類(lèi)并調(diào)用里面的view函數(shù) ?? ??? ?v.setVisible(false);//關(guān)閉穿進(jìn)來(lái)的那個(gè)類(lèi)的視圖 ?? ??? ?break; ?? ?//如果按下視圖2 ?? ?case "視圖2": ?? ??? ?new View().view2(); ?? ??? ?v.setVisible(false); ?? ??? ?} ?? ?} }
主類(lèi)部分代碼:
public class Main { ?? ?public static void main(String[] args) { ?? ??? ?View v=new View(); ?? ??? ?v.view(); ?? ?} }
運(yùn)行效果:
運(yùn)行主類(lèi)后:
點(diǎn)擊視圖2后
點(diǎn)擊視圖1后
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java設(shè)計(jì)模式之代理模式原理及實(shí)現(xiàn)代碼分享
這篇文章主要介紹了Java設(shè)計(jì)模式之代理模式原理及實(shí)現(xiàn)代碼分享,設(shè)計(jì)代理模式的定義,靜態(tài)代理,動(dòng)態(tài)代理,jdk動(dòng)態(tài)代理實(shí)現(xiàn)步驟,原理及源碼等相關(guān)內(nèi)容,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11SpringMVC使用注解實(shí)現(xiàn)登錄功能
這篇文章主要為大家詳細(xì)介紹了SpringMVC使用注解實(shí)現(xiàn)登錄功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-09-09springboot實(shí)現(xiàn)公眾號(hào)接收回復(fù)消息和超過(guò)5秒被動(dòng)回復(fù)消息
本文主要介紹了springboot實(shí)現(xiàn)公眾號(hào)接收回復(fù)消息和超過(guò)5秒被動(dòng)回復(fù)消息,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05SpringMVC實(shí)現(xiàn)賬號(hào)只能在一處登陸
這篇文章主要為大家詳細(xì)介紹了SpringMVC如何實(shí)現(xiàn)賬號(hào)只能在一處登陸,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03Java多線(xiàn)程之悲觀(guān)鎖與樂(lè)觀(guān)鎖
這篇文章主要為大家詳細(xì)介紹了Java悲觀(guān)鎖與樂(lè)觀(guān)鎖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-03-03通過(guò)Maven進(jìn)行jedis連接redis的實(shí)現(xiàn)
這篇文章主要介紹了通過(guò)Maven進(jìn)行jedis連接redis的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07Java實(shí)現(xiàn)的模糊匹配某文件夾下的文件并刪除功能示例
這篇文章主要介紹了Java實(shí)現(xiàn)的模糊匹配某文件夾下的文件并刪除功能,涉及java針對(duì)目錄與文件的遍歷、匹配、判斷、刪除等相關(guān)操作技巧,需要的朋友可以參考下2018-02-02