您好,登錄后才能下訂單哦!
這篇文章主要介紹“Java GUI常用窗體組件與面板如何使用”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“Java GUI常用窗體組件與面板如何使用”文章能幫助大家解決問題。
Swing組件通常被稱作“輕量級組件”,它完全由Java編寫,不依賴操作系統語言。
類繼承關系
JavaSwing組件間的繼承關系
JComponent 是swing組件存放的位置,常見的組件如下:
JFrame是一個容器,它是各個組件的載體,在開發的過程中,我們通過繼承 java.swing。JFrame 來創建要的窗體
JFrame()創建沒有標題窗口
Frame(String s)創建標題為s的窗口
public void setSize(int width,int height) 設置窗口的大小 public void setLocation(int x,int y) 設置窗口的位置,默認位置是(0,0) public void setBounds(int a,int b,int width,int height) 設置窗口的初始值位置是(a,b),窗口的寬是width,高是height public void setVisible(boolean b) 設置窗口是否可見,窗口默認是不可見的 public void setResizable(boolean b) 設置窗口是否可調節大小,默認是可調整大小 public void dispose() 撤銷當前窗口,并釋放當前窗口所使用的資源 public void setExtendedState(int state) 設置窗口的擴展狀態,其中參數state取JFrame類中的下列類常量: MAXIMIZED_HORIZ(水平方向最大化) MAXIMIZED_VERT(垂直方向最大化) MAXIMIZED_BOTH(水平、垂直方向都最大化)
import javax.swing.*;//導入swing這個包的所有類和接口 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);//設置框架是否可見,true為可見,默認不可見。所以一定要寫!!!! jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//設置窗體關閉方式(直接關閉應用程序),也可以寫成JFrame.EXIT_ON_CLOSE } }
import javax.swing.*;
這是java導入包的語法,表示導入swing這個包的所有類和接口
swing是圖形可視包,導入這個包后才能進行GUI圖形化軟件的開發
import    代表“引入”
javax.swing  代表“路徑” (在javax文件夾下的swing文件夾)
*       代表“全部”
繼承自 java.awt.Dialog 類。它是從一個窗體彈出來的另外一個窗體,它和Frame類似,需要調用 getContentPane 將窗體轉換為容器,然后在容器中設置窗體的內存
JDialog:可當成——JFrame使用,但必須從屬于JFrame
構造函數
JDialog(); JDialog(Frame f);//指定父窗口 JDailog(Frame f,String title);//指定父窗口 + 標題
關閉方式比JFrame少一種:
import javax.swing.*;//導入swing這個包的所有類和接口 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);//設置框架是否可見,true為可見,默認不可見。所以一定要寫!!!! jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//設置窗體關閉方式(直接關閉應用程序),也可以寫成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); } }
面板也是一種swing容器,它可以作為容器添加容納其他的組件,但是他自己必須被加在一個容器內
JPanel 就是一種最簡單的面板,他繼承 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));//這串代碼好像并沒有體現,不知道什么原因 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); } }
還是想有大佬可以指點一下問題的原因
JScrollPane是帶滾動條的面板。因此,在碰到需要將一個達到組件放到一個小較小的空間的時候,使用該面板,JScollPane 內只能添加一個個組件;因此,如果需要將多個組件添加到一個JScollPane 中時,需要添加的組件添加到 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); } }
補充:
JButton在FlowLayout、BorderLayout等一些布局中使用setSize()設置大小無法生效的,可以使用setPreferredSize方法進行設置
使用布局管理器時,使用setPreferredSize方法:
jbutton.setPreferredSize(new Dimension(w,h));
使用絕對布局時:
jbutton.setBounds(x,y,w,h);
關于“Java GUI常用窗體組件與面板如何使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。