java的GUI實(shí)現(xiàn)簡(jiǎn)單切換界面
本文實(shí)例為大家分享了java GUI實(shí)現(xiàn)簡(jiǎn)單切換界面的具體代碼,供大家參考,具體內(nèi)容如下
1.關(guān)于java的GUI簡(jiǎn)單切換界面
在剛開始學(xué)習(xí)java的gui界面設(shè)計(jì)的時(shí)候因?yàn)檎n本上沒有相關(guān)切換界面的介紹,所以如何進(jìn)行簡(jiǎn)單的一個(gè)界面切換困擾了我很久。因此我上網(wǎng)看了一些代碼,卻發(fā)現(xiàn)網(wǎng)上的大多數(shù)代碼都很繁瑣,仔細(xì)看下去感覺有許多冗余,雖然那些代碼達(dá)到了切換界面的目的,但也有其它一些我暫時(shí)用不上的功能。
簡(jiǎn)而言之,就是網(wǎng)上這部分的代碼不夠精簡(jiǎn)。于是我開始單單把這一簡(jiǎn)單的功能剝離出來。廢話不多說還是先上代碼吧,想說的話都在注釋里。 視圖部分代碼:
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è)置界面名稱
?? ??? ?JButton eb=new JButton("視圖2");//設(shè)置切換的按鈕eb
?? ??? ?JLabel tip_l=new JLabel("視圖1",0);//界面的內(nèi)容,這里用一個(gè)標(biāo)簽來替代具體內(nèi)容,后面的“0”是為了使這個(gè)標(biāo)簽居中對(duì)齊
?? ??? ?eb.addActionListener(exwpAction);//為eb這個(gè)按鈕添加按鍵監(jiān)聽
?? ??? ?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)作分開成兩個(gè)類來寫了才需要進(jìn)行對(duì)象的傳遞如果動(dòng)作和界面在一個(gè)對(duì)象中寫的話就不需要傳入對(duì)象了
?? ? */
?? ?View v=new View();//先定義一個(gè)View對(duì)象在切換界面的時(shí)候會(huì)使用到
?? ?public ViewAction(View v)//將外界的View對(duì)象傳入這個(gè)類里?
?? ?{
?? ??? ?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)榉催^來的話我們會(huì)發(fā)現(xiàn)延遲看上去會(huì)有一些難受
?? ??? ?new View().view();//new一個(gè)View類并調(diào)用里面的view函數(shù)
?? ??? ?v.setVisible(false);//關(guān)閉穿進(jìn)來的那個(gè)類的視圖
?? ??? ?break;
?? ?//如果按下視圖2
?? ?case "視圖2":
?? ??? ?new View().view2();
?? ??? ?v.setVisible(false);
?? ??? ?}
?? ?}
}主類部分代碼:
public class Main {
?? ?public static void main(String[] args) {
?? ??? ?View v=new View();
?? ??? ?v.view();
?? ?}
}運(yùn)行效果:
運(yùn)行主類后:

點(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-11
SpringMVC使用注解實(shí)現(xiàn)登錄功能
這篇文章主要為大家詳細(xì)介紹了SpringMVC使用注解實(shí)現(xiàn)登錄功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-09-09
springboot實(shí)現(xiàn)公眾號(hào)接收回復(fù)消息和超過5秒被動(dòng)回復(fù)消息
本文主要介紹了springboot實(shí)現(xiàn)公眾號(hào)接收回復(fù)消息和超過5秒被動(dòng)回復(fù)消息,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05
SpringMVC實(shí)現(xiàn)賬號(hào)只能在一處登陸
這篇文章主要為大家詳細(xì)介紹了SpringMVC如何實(shí)現(xiàn)賬號(hào)只能在一處登陸,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03
通過Maven進(jìn)行jedis連接redis的實(shí)現(xiàn)
這篇文章主要介紹了通過Maven進(jìn)行jedis連接redis的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-07-07
Java實(shí)現(xiàn)的模糊匹配某文件夾下的文件并刪除功能示例
這篇文章主要介紹了Java實(shí)現(xiàn)的模糊匹配某文件夾下的文件并刪除功能,涉及java針對(duì)目錄與文件的遍歷、匹配、判斷、刪除等相關(guān)操作技巧,需要的朋友可以參考下2018-02-02

