java的GUI實現(xiàn)簡單切換界面
本文實例為大家分享了java GUI實現(xiàn)簡單切換界面的具體代碼,供大家參考,具體內(nèi)容如下
1.關(guān)于java的GUI簡單切換界面
在剛開始學(xué)習(xí)java的gui界面設(shè)計的時候因為課本上沒有相關(guān)切換界面的介紹,所以如何進(jìn)行簡單的一個界面切換困擾了我很久。因此我上網(wǎng)看了一些代碼,卻發(fā)現(xiàn)網(wǎng)上的大多數(shù)代碼都很繁瑣,仔細(xì)看下去感覺有許多冗余,雖然那些代碼達(dá)到了切換界面的目的,但也有其它一些我暫時用不上的功能。
簡而言之,就是網(wǎng)上這部分的代碼不夠精簡。于是我開始單單把這一簡單的功能剝離出來。廢話不多說還是先上代碼吧,想說的話都在注釋里。 視圖部分代碼:
import java.awt.BorderLayout;
import javax.swing.*;
public class View extends JFrame {
?? ?public void view()
?? ?{
?? ??? ?ViewAction exwpAction=new ViewAction(this);//提前定義好動作對象
?? ??? ?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)容,這里用一個標(biāo)簽來替代具體內(nèi)容,后面的“0”是為了使這個標(biāo)簽居中對齊
?? ??? ?eb.addActionListener(exwpAction);//為eb這個按鈕添加按鍵監(jiān)聽
?? ??? ?add(tip_l, BorderLayout.CENTER);//將tip_l這個標(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);
?? ?}
}動作部分代碼:
import java.awt.event.ActionEvent;
public class ViewAction implements java.awt.event.ActionListener {
?? ?/*
?? ? * 這一部分是因為我把界面和動作分開成兩個類來寫了才需要進(jìn)行對象的傳遞如果動作和界面在一個對象中寫的話就不需要傳入對象了
?? ? */
?? ?View v=new View();//先定義一個View對象在切換界面的時候會使用到
?? ?public ViewAction(View v)//將外界的View對象傳入這個類里?
?? ?{
?? ??? ?this.v=v;
?? ?}
?? ?public void actionPerformed(ActionEvent event)
?? ?{
?? ?Object object=event.getSource();//創(chuàng)建事件源對象
?? ?switch(event.getActionCommand()){
?? ?//如果按下視圖1
?? ?case "視圖1":
?? ??? ?//這里之所以先創(chuàng)建新視圖再關(guān)閉舊視圖是因為反過來的話我們會發(fā)現(xiàn)延遲看上去會有一些難受
?? ??? ?new View().view();//new一個View類并調(diào)用里面的view函數(shù)
?? ??? ?v.setVisible(false);//關(guān)閉穿進(jìn)來的那個類的視圖
?? ??? ?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)行主類后:

點擊視圖2后

點擊視圖1后

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java異常繼承結(jié)構(gòu)解析_動力節(jié)點Java學(xué)院整理
這篇文章主要介紹了Java異常繼承結(jié)構(gòu)解析的相關(guān)知識,需要的朋友可以參考下2017-04-04
大數(shù)據(jù) java hive udf函數(shù)的示例代碼(手機(jī)號碼脫敏)
這篇文章主要介紹了大數(shù)據(jù) java hive udf函數(shù)(手機(jī)號碼脫敏),的相關(guān)知識,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-06-06
Springcloud hystrix服務(wù)熔斷和dashboard如何實現(xiàn)
這篇文章主要介紹了Springcloud hystrix服務(wù)熔斷和dashboard如何實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-12-12
為什么不建議使用Java自定義Object作為HashMap的key
這篇文章主要介紹了為什么不建議使用Java自定義Object作為HashMap的key,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下2022-06-06
Java8新特性O(shè)ptional類及新時間日期API示例詳解
這篇文章主要為大家介紹了Java8新特性O(shè)ptional類及新時間日期API示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11

