JavaGUI常用窗體組件與面板使用詳解
1.常用的窗體
1.概述
Swing組件通常被稱作“輕量級(jí)組件”,它完全由Java編寫,不依賴操作系統(tǒng)語(yǔ)言。
類繼承關(guān)系
JavaSwing組件間的繼承關(guān)系
JComponent 是swing組件存放的位置,常見(jiàn)的組件如下:
2.JFrame
JFrame是一個(gè)容器,它是各個(gè)組件的載體,在開發(fā)的過(guò)程中,我們通過(guò)繼承 java.swing。JFrame 來(lái)創(chuàng)建要的窗體
1.新建JFrame對(duì)象
JFrame()創(chuàng)建沒(méi)有標(biāo)題窗口
Frame(String s)創(chuàng)建標(biāo)題為s的窗口
2.設(shè)置JFrame的大小
public void setSize(int width,int height) 設(shè)置窗口的大小 public void setLocation(int x,int y) 設(shè)置窗口的位置,默認(rèn)位置是(0,0) public void setBounds(int a,int b,int width,int height) 設(shè)置窗口的初始值位置是(a,b),窗口的寬是width,高是height public void setVisible(boolean b) 設(shè)置窗口是否可見(jiàn),窗口默認(rèn)是不可見(jiàn)的 public void setResizable(boolean b) 設(shè)置窗口是否可調(diào)節(jié)大小,默認(rèn)是可調(diào)整大小 public void dispose() 撤銷當(dāng)前窗口,并釋放當(dāng)前窗口所使用的資源 public void setExtendedState(int state) 設(shè)置窗口的擴(kuò)展?fàn)顟B(tài),其中參數(shù)state取JFrame類中的下列類常量: MAXIMIZED_HORIZ(水平方向最大化) MAXIMIZED_VERT(垂直方向最大化) MAXIMIZED_BOTH(水平、垂直方向都最大化)
3.設(shè)定JFrame
import javax.swing.*;//導(dǎo)入swing這個(gè)包的所有類和接口 public class A { public static void main(String[] args){ JFrame jf=new JFrame("hello"); // jf.setSize(400,300); // jf.setLocation(600,350); jf.setBounds(600,350,400,300); jf.setVisible(true);//設(shè)置框架是否可見(jiàn),true為可見(jiàn),默認(rèn)不可見(jiàn)。所以一定要寫?。。。? jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//設(shè)置窗體關(guān)閉方式(直接關(guān)閉應(yīng)用程序),也可以寫成JFrame.EXIT_ON_CLOSE } }
import javax.swing.*;
這是java導(dǎo)入包的語(yǔ)法,表示導(dǎo)入swing這個(gè)包的所有類和接口
swing是圖形可視包,導(dǎo)入這個(gè)包后才能進(jìn)行GUI圖形化軟件的開發(fā)
import 代表“引入”
javax.swing 代表“路徑” (在javax文件夾下的swing文件夾)
* 代表“全部”
3.JDialog
繼承自 java.awt.Dialog 類。它是從一個(gè)窗體彈出來(lái)的另外一個(gè)窗體,它和Frame類似,需要調(diào)用 getContentPane 將窗體轉(zhuǎn)換為容器,然后在容器中設(shè)置窗體的內(nèi)存
JDialog:可當(dāng)成——JFrame使用,但必須從屬于JFrame
構(gòu)造函數(shù)
JDialog(); JDialog(Frame f);//指定父窗口 JDailog(Frame f,String title);//指定父窗口 + 標(biāo)題
關(guān)閉方式比JFrame少一種:
import javax.swing.*;//導(dǎo)入swing這個(gè)包的所有類和接口 public class A { public static void main(String[] args){ JFrame jf=new JFrame("hello"); // jf.setSize(400,300); // jf.setLocation(600,350); jf.setBounds(600,350,400,300); jf.setVisible(true);//設(shè)置框架是否可見(jiàn),true為可見(jiàn),默認(rèn)不可見(jiàn)。所以一定要寫?。。?! jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//設(shè)置窗體關(guān)閉方式(直接關(guān)閉應(yīng)用程序),也可以寫成JFrame.EXIT_ON_CLOSE JDialog jd=new JDialog(jf,"JDailog"); jd.setBounds(700,450,200,150); jd.setVisible(true); jd.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); } }
2.常用的面板
面板也是一種swing容器,它可以作為容器添加容納其他的組件,但是他自己必須被加在一個(gè)容器內(nèi)
1.JPanel
JPanel 就是一種最簡(jiǎn)單的面板,他繼承 java.awt.Contaniner 類
import javax.swing.*; import java.awt.*; public class B { public static void main(String[] args){ JFrame jf=new JFrame("JPanel"); jf.setBounds(600,350,600,500); jf.setVisible(true); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JButton jb1=new JButton("按鈕1"); JButton jb2=new JButton("按鈕2"); JPanel jp=new JPanel(new FlowLayout()); jp.setPreferredSize(new Dimension(100,60));//這串代碼好像并沒(méi)有體現(xiàn),不知道什么原因 jp.setBackground(Color.gray); jf.add(jp); jp.add(jb1); jp.add(jb2); } }
修改代碼
import javax.swing.*; import java.awt.*; public class B { public static void main(String[] args){ JFrame jf=new JFrame("JPanel"); jf.setBounds(300,350,500,500); jf.setLayout(null); jf.setVisible(true); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JButton jb1=new JButton("按鈕1"); JButton jb2=new JButton("按鈕2"); JPanel jp=new JPanel(new FlowLayout()); jp.setBounds(100,100,300,300); jp.setBackground(Color.gray); jf.add(jp); jp.add(jb1); jp.add(jb2); } }
還是想有大佬可以指點(diǎn)一下問(wèn)題的原因
2.JScrollPane
JScrollPane是帶滾動(dòng)條的面板。因此,在碰到需要將一個(gè)達(dá)到組件放到一個(gè)小較小的空間的時(shí)候,使用該面板,JScollPane 內(nèi)只能添加一個(gè)個(gè)組件;因此,如果需要將多個(gè)組件添加到一個(gè)JScollPane 中時(shí),需要添加的組件添加到 JPanel 中,再將 JPanel 添加到 JScollPane 中
import javax.swing.*; import java.awt.*; public class JScrollpane { public static void main (String[] args){ JFrame jf=new JFrame("JScollPane"); jf.setBounds(500,500,500,200); JButton jb=new JButton("香蕉"); JButton jb2=new JButton("蘋果"); JButton jb3=new JButton("菠蘿蜜"); jb.setPreferredSize(new Dimension(300,300)); JPanel jp=new JPanel(); jp.add(jb); jp.add(jb2); jp.add(jb3); JScrollPane js=new JScrollPane(jp); jf.add(js); jf.setVisible(true); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }
補(bǔ)充:
JButton在FlowLayout、BorderLayout等一些布局中使用setSize()設(shè)置大小無(wú)法生效的,可以使用setPreferredSize方法進(jìn)行設(shè)置
使用布局管理器時(shí),使用setPreferredSize方法:
jbutton.setPreferredSize(new Dimension(w,h));
使用絕對(duì)布局時(shí):
jbutton.setBounds(x,y,w,h);
到此這篇關(guān)于JavaGUI常用窗體組件與面板使用詳解的文章就介紹到這了,更多相關(guān)JavaGUI窗體組件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java自定義日志輸出文件(log4j日志文件輸出多個(gè)自定義日志文件)
打印日志的在程序中是必不可少的,如果需要將不同的日志打印到不同的地方,則需要定義不同的Appender,然后定義每一個(gè)Appender的日志級(jí)別、打印形式和日志的輸出路徑,下面看一個(gè)示例吧2014-01-01java實(shí)現(xiàn)求只出現(xiàn)一次的數(shù)字
本文主要介紹了java實(shí)現(xiàn)求只出現(xiàn)一次的數(shù)字,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02解決nacos修改配置信息后需要重啟服務(wù)才能生效的問(wèn)題
當(dāng)配置信息發(fā)生變動(dòng)時(shí),傳統(tǒng)修改配置信息后,需要重新重啟服務(wù)器才可以生效,大量應(yīng)用配置修改時(shí),需要一個(gè)個(gè)修改配置,無(wú)法統(tǒng)一修改,且沒(méi)有辦法回溯配置版本,所以本文給大家介紹了如何解決這些問(wèn)題的方法,需要的朋友可以參考下2023-10-10Mybatis plus 配置多數(shù)據(jù)源的實(shí)現(xiàn)示例
這篇文章主要介紹了Mybatis plus 配置多數(shù)據(jù)源的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08Java Swing組件實(shí)現(xiàn)進(jìn)度監(jiān)視功能示例
這篇文章主要介紹了Java Swing組件實(shí)現(xiàn)進(jìn)度監(jiān)視功能,結(jié)合完整實(shí)例形式詳細(xì)分析了Java基于Swing組件實(shí)現(xiàn)進(jìn)度條顯示功能的具體操作技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下2018-02-02PowerJob的OhMyClassLoader工作流程源碼解讀
這篇文章主要介紹了PowerJob的OhMyClassLoader工作流程源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01