java圖形界面編程實(shí)戰(zhàn)代碼
關(guān)于Java圖形化界面設(shè)計(jì),基礎(chǔ)知識(shí)網(wǎng)上可搜,下面簡(jiǎn)單介紹一下重點(diǎn)概念,然后就由淺入深代碼實(shí)例。
程序是為了方便用戶使用的,Java引入圖形化界面編程。
1.JFrame 是容器類
2.AWT 是抽象窗口組件工具包,是 Java 最早的用于編寫圖形節(jié)目應(yīng)用程序的開發(fā)包。
3.Swing 是為了解決 AWT 存在的問題而新開發(fā)的包,它以 AWT 為基礎(chǔ)的。
代碼實(shí)例1:
package com.zhouzhou; //練習(xí)網(wǎng)格布局 import java.awt.*; import javax.swing.*; public class Demo9 extends JFrame { // 定義組件 int size = 9; JButton jbs[] = new JButton[size]; public static void main(String[] args) { // 創(chuàng)建實(shí)例 Demo9 de = new Demo9(); } // 構(gòu)造函數(shù) public Demo9() { // 創(chuàng)建組件 for (int i = 0; i < size; i++) { jbs[i] = new JButton(String.valueOf(i)); } // 設(shè)置網(wǎng)格布局,這里只有前兩個(gè)參數(shù)(行/列)3和3 的話,網(wǎng)格沒有空隙 this.setLayout(new GridLayout(3, 3, 10, 10)); // 添加組件 for (int i = 0; i < size; i++) { this.add(jbs[i]); } // 設(shè)置窗體屬性 this.setTitle("網(wǎng)格布局案例"); this.setSize(300, 400); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setLocation(200, 200); // 顯示 this.setVisible(true); } }
代碼實(shí)例2:
package com.zhouzhou; import java.awt.*; import javax.swing.*; public class Demo10 extends JFrame { // 定義組件 JPanel jp1, jp2; JButton jb1, jb2, jb3, jb4, jb5, jb6; public static void main(String[] args) { // TODO Auto-generated method stub Demo10 de = new Demo10(); } // 構(gòu)造函數(shù) public Demo10() { // 創(chuàng)建組件 jp1 = new JPanel(); jp2 = new JPanel(); jb1 = new JButton("西瓜"); jb2 = new JButton("蘋果"); jb3 = new JButton("荔枝"); jb4 = new JButton("葡萄"); jb5 = new JButton("桔子"); jb6 = new JButton("香蕉"); // 設(shè)置布局管理器, //JPanel布局默認(rèn)是BorderLoyout// 添加JPanel //JPanel屬于容器類組件,可以加入別的組件 jp1.add(jb1); jp1.add(jb2); jp2.add(jb3); jp2.add(jb4); jp2.add(jb5); // 把jpanel 加入JFrame this.add(jp1, BorderLayout.NORTH); this.add(jb6, BorderLayout.CENTER); this.add(jp2, BorderLayout.SOUTH); this.setSize(300, 400); this.setLocation(200, 200); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } }
代碼實(shí)例3:
package com.zhouzhou; import java.awt.*; import javax.swing.*; public class Demo11 extends JFrame { // 定義組件 JPanel jp1, jp2, jp3; JLabel jlb1, jlb2; JButton jb1, jb2; JTextField jtf1; JPasswordField jpf1; public static void main(String[] args) { // TODO Auto-generated method stub Demo11 d1 = new Demo11(); } // 構(gòu)造函數(shù) public Demo11() { jp1 = new JPanel(); jp2 = new JPanel(); jp3 = new JPanel(); jlb1 = new JLabel("用戶名"); jlb2 = new JLabel("密 碼"); jb1 = new JButton("登錄"); jb2 = new JButton("取消"); jtf1 = new JTextField(10); jpf1 = new JPasswordField(10);// 設(shè)置布局管理(上面忘記:extends JFrame,這里出錯(cuò)了) this.setLayout(new GridLayout(3, 1)); // 加入各個(gè)組件 jp1.add(jlb1); jp1.add(jtf1); jp2.add(jlb2); jp2.add(jpf1); jp3.add(jb1); jp3.add(jb2); // 加入到JFrame this.add(jp1); this.add(jp2); this.add(jp3); this.setSize(250, 150); this.setTitle("登錄"); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } }
代碼實(shí)例4:
package com.zhouzhou; import java.awt.*; import javax.swing.*; public class Demo12 extends JFrame { // 定義組件 JPanel jp1, jp2, jp3; JLabel jlb1, jlb2; JCheckBox jcb1, jcb2, jcb3; JRadioButton jrb1, jrb2; JButton jb1, jb2; // 單選設(shè)置 ButtonGroup bg, bg2; public static void main(String[] args) { // TODO Auto-generated method stub Demo12 d2 = new Demo12(); } // 構(gòu)造函數(shù) public Demo12() { jp1 = new JPanel(); jp2 = new JPanel(); jp3 = new JPanel(); jlb1 = new JLabel("你喜歡的運(yùn)動(dòng)"); jlb2 = new JLabel("你的性別"); jcb1 = new JCheckBox("足球"); jcb2 = new JCheckBox("籃球"); jcb3 = new JCheckBox("網(wǎng)球"); // 下面可以設(shè)置單選 // ButtonGroup bg2=new ButtonGroup(); // bg2.add(jcb1); // bg2.add(jcb2); // bg2.add(jcb2); jrb1 = new JRadioButton("男"); jrb2 = new JRadioButton("女"); // 一定要把jrb1,jrb2放入到一個(gè)ButtonGroup里面 ButtonGroup bg = new ButtonGroup(); bg.add(jrb1); bg.add(jrb2); jb1 = new JButton("注冊(cè)用戶"); jb2 = new JButton("取消用戶"); this.setLayout(new GridLayout(3, 1)); jp1.add(jlb1); jp1.add(jcb1); jp1.add(jcb2); jp1.add(jcb3); jp2.add(jlb2); jp2.add(jrb1); jp2.add(jrb2); jp3.add(jb1); jp3.add(jb2); // 加入到JFrame this.add(jp1); this.add(jp2); this.add(jp3); this.setSize(300, 200); this.setTitle("用戶注冊(cè)界面"); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } }
代碼實(shí)例5:
package com.zhouzhou; import java.awt.*; import javax.swing.*; public class Demo13 extends JFrame { // 定義組件 JPanel jp1, jp2; JLabel jlb1, jlb2; JComboBox jcb1; JList jl1; JScrollPane jsp; public static void main(String[] args) { // TODO Auto-generated method stub Demo13 d3 = new Demo13(); } public Demo13() { jp1 = new JPanel(); jp2 = new JPanel(); jlb1 = new JLabel("您的籍貫是"); jlb2 = new JLabel("您喜歡旅游的地區(qū)"); String[] jg = { "北京", "上海", "天津", "重慶", "江蘇" }; jcb1 = new JComboBox(jg); String[] jg2 = { "故宮", "長(zhǎng)城", "九寨溝", "天安門", "火星" }; jl1 = new JList(jg2); // 設(shè)置你希望顯示多少個(gè)選項(xiàng) jl1.setVisibleRowCount(1); jsp = new JScrollPane(jl1); // 布局管理 this.setLayout(new GridLayout(3, 1)); // 添加組件 jp1.add(jlb1); jp1.add(jcb1); jp2.add(jlb2); jp2.add(jsp); this.add(jp1); this.add(jp2); this.setSize(300, 400); this.setTitle("下拉框練習(xí)"); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } }
代碼實(shí)例6:
package com.zhouzhou; import java.awt.*; import javax.swing.*; public class Demo14 extends JFrame { // 定義組件 JSplitPane jsp; JList jList; JLabel jl1; public static void main(String[] args) { // TODO Auto-generated method stub Demo14 d4 = new Demo14(); } public Demo14() { // 創(chuàng)建組件 String[] words = { "boy", "gril", "bird", "box" }; jList = new JList(words); // JLabel可以放置圖片 jl1 = new JLabel(new ImageIcon("images/1.jpeg")); // 拆分窗格 jsp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, jList, jl1); // 可以手動(dòng)伸縮變化 jsp.setOneTouchExpandable(true); // 設(shè)置布局管理器,它本身就是borderLayout布局,就不用再設(shè)置了 // 添加組件 this.add(jsp); this.setSize(400, 300); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } }
代碼實(shí)例7:
package com.zhouzhou; import java.awt.*; import javax.swing.*; public class Demo15 extends JFrame { // 定義組件 JTextArea jta = null;// 多行文本框 JScrollPane jsp = null; JPanel jp1 = null;// 面板 JComboBox jcb = null;// 下拉框組件 JTextField jtf = null;// 文本框 JButton jb = null; public static void main(String[] args) { // TODO Auto-generated method stub Demo15 d5 = new Demo15(); } // 構(gòu)造函數(shù) public Demo15() { // 多行文本框會(huì)根據(jù)情況自己調(diào)節(jié)大小 jta = new JTextArea(); jsp = new JScrollPane(jta); jp1 = new JPanel(); String j2[] = { "北京", "商行", "農(nóng)行", "師大", "附中", "哈爾濱" }; jcb = new JComboBox(j2); // 文本框最好設(shè)置初值 jtf = new JTextField(10); jb = new JButton("發(fā)送"); // 布局管理 // this.setLayout(new GridLayout(1, 1)); // 添加 jp1.add(jcb); jp1.add(jtf); jp1.add(jb); // 多行文本框是放在這里(JFrame)的!!! // 因?yàn)樯厦嬗痔砑涌梢詽L動(dòng)的功能,這里傳入jsp,而不是jta this.add(jsp); // 下面這里就需要定位處理 this.add(jp1, BorderLayout.SOUTH); // 設(shè)置窗體屬性,z這里很厲害!! this.setIconImage((new ImageIcon("images\\3.jpg")).getImage()); this.setSize(300, 200); this.setTitle("QQ登錄"); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } }
代碼實(shí)例8:
package com.zhouzhou; //QQ登錄界面制作 import java.awt.*; import javax.swing.*; public class Demo16 extends JFrame { // 北部區(qū)域 JLabel jl1; // 南部區(qū)域 JButton jb1, jb2, jb3; JPanel jp1; // 中部區(qū)域 JTabbedPane jtp;// 選項(xiàng)卡窗格 JPanel jp2, jp3, jp4; JLabel jl2, jl3, jl4, jl5; // 號(hào)碼輸入文本框 JTextField jtf; // 密碼 JPasswordField jpf; // 清除號(hào)碼 JButton jb4; // 隱身登錄、記住密碼 JCheckBox jcb1, jcb2; public static void main(String[] args) { // TODO Auto-generated method stub new Demo16(); } public Demo16() { // 創(chuàng)建組件 jl2 = new JLabel("QQ號(hào)碼", JLabel.CENTER); jl3 = new JLabel("QQ密碼", JLabel.CENTER); jl4 = new JLabel("忘記密碼", JLabel.CENTER); jl4.setFont(new Font("宋體", Font.PLAIN, 16));// 設(shè)置字體樣式 jl4.setForeground(Color.BLUE);// 設(shè)置字體顏色 jl5 = new JLabel("<html><a href='www.qq.com'>申請(qǐng)密碼保護(hù)</a></html>"); // 鼠標(biāo)觸發(fā)變化 jl5.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); jtf = new JTextField(); jpf = new JPasswordField(); jb4 = new JButton(new ImageIcon("images\\login.png")); jcb1 = new JCheckBox("隱身登錄"); jcb2 = new JCheckBox("記住密碼"); // 北部區(qū)域 jl1 = new JLabel(new ImageIcon("images\\headpicture.jpg")); // 南部區(qū)域 jp1 = new JPanel(); jb1 = new JButton(new ImageIcon("images\\login.png")); jb2 = new JButton(new ImageIcon("images\\delete.png")); jb3 = new JButton(new ImageIcon("images\\register.png")); // 中部區(qū)域 jtp = new JTabbedPane(); jp2 = new JPanel(); jp3 = new JPanel(); jp3.setBackground(Color.RED);// 給面板設(shè)置背景 jp4 = new JPanel(); jp4.setBackground(new Color(0, 0, 255)); // 將面板添加到選項(xiàng)卡窗格上 jtp.add("QQ號(hào)碼", jp2);// 參數(shù):選項(xiàng)卡名稱,面板 jtp.add("手機(jī)號(hào)碼", jp3); jtp.add("電子郵箱", jp4); // 設(shè)置布局 jp2.setLayout(new GridLayout(3, 3)); // 添加組件 jp1.add(jb1); jp1.add(jb2); jp1.add(jb3); jp2.add(jl2); jp2.add(jtf); jp2.add(jb4); jp2.add(jl3); jp2.add(jpf); jp2.add(jl4); jp2.add(jcb1); jp2.add(jcb2); jp2.add(jl5); this.add(jp1, BorderLayout.SOUTH); this.add(jl1, BorderLayout.NORTH); this.add(jtp, BorderLayout.CENTER); // 展示組件 ImageIcon icon = new ImageIcon("images\\qq.png"); this.setIconImage(icon.getImage());// 給窗體設(shè)置圖標(biāo)方法 this.setSize(400, 380); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } }
代碼實(shí)例9:
package com.zhouzhou; //記事本界面 import java.awt.*; import javax.swing.*; import java.awt.event.*; public class Demo17 extends JFrame { // 工具條 JToolBar jtb; JButton jb1, jb2, jb3, jb4, jb5, jb6; // 菜單條組件 JMenuBar jmb; JMenu menu1, menu2, menu3, menu4, menu5; JMenuItem item2, item3, item4, item5, item6, item7; JMenu xinjian;// 二級(jí)菜單 JMenuItem file, project; JTextArea jta; public static void main(String[] args) { // TODO Auto-generated method stub new Demo17(); } public Demo17() { // 創(chuàng)建工具條 jtb = new JToolBar(); jb1 = new JButton(new ImageIcon("images\\11.png")); jb1.setToolTipText("新建"); jb2 = new JButton(new ImageIcon("images\\22.png")); jb2.setToolTipText("打開"); jb3 = new JButton(new ImageIcon("images\\33.png")); jb3.setToolTipText("等待"); jb4 = new JButton(new ImageIcon("images\\44.png")); jb4.setToolTipText("統(tǒng)計(jì)"); jb5 = new JButton(new ImageIcon("images\\55.png")); jb5.setToolTipText("參與"); jb6 = new JButton(new ImageIcon("images\\66.png")); jb6.setToolTipText("旁觀"); jmb = new JMenuBar(); menu1 = new JMenu("文件(F)"); menu1.setMnemonic('F');// 設(shè)置助記符 menu2 = new JMenu("編輯(E)"); menu2.setMnemonic('E'); menu3 = new JMenu("格式(O)"); menu3.setMnemonic('O'); menu4 = new JMenu("查看(V)"); menu4.setMnemonic('V'); menu5 = new JMenu("幫助(H)"); menu5.setMnemonic('H'); // item1=new JMenuItem(“新建”) xinjian = new JMenu("新建"); file = new JMenuItem("文件"); project = new JMenuItem("工程"); item2 = new JMenuItem("打開", new ImageIcon("images\\77.png")); item3 = new JMenuItem("保存(S)"); item3.setMnemonic('S'); // 給菜單選項(xiàng)添加快捷方式 item3.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.ALT_MASK)); item4 = new JMenuItem("另存為"); item5 = new JMenuItem("頁(yè)面設(shè)置"); item6 = new JMenuItem("打印"); item7 = new JMenuItem("退出"); jta = new JTextArea(); // 設(shè)置布局 // 添加組件 // 將按鈕添加到工具條上 jtb.add(jb1); jtb.add(jb2); jtb.add(jb3); jtb.add(jb4); jtb.add(jb5); jtb.add(jb6); // 將菜單添加到菜單欄上 xinjian.add(file); xinjian.add(project); menu1.add(xinjian); menu1.add(item2); menu1.add(item3); menu1.add(item4); menu1.addSeparator();// 添加分割線 menu1.add(item5); menu1.add(item6); menu1.addSeparator(); menu1.add(item7); // 將菜單添加到菜單條上 jmb.add(menu1); jmb.add(menu2); jmb.add(menu3); jmb.add(menu4); jmb.add(menu5); // 將菜單添加到窗體上 this.setJMenuBar(jmb); // 將工具條添加到窗體 this.add(jtb, BorderLayout.NORTH); JScrollPane jsp = new JScrollPane(jta); jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); this.add(jsp); // 展示 this.setTitle("記事本"); ImageIcon icon = new ImageIcon("images\\jsb.png"); this.setIconImage(icon.getImage()); this.setSize(1200, 900); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
淺談MySQL中是如何實(shí)現(xiàn)事務(wù)提交和回滾的
本文主要介紹了MySQL中是如何實(shí)現(xiàn)事務(wù)提交和回滾的,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02通過Mybatis實(shí)現(xiàn)單表內(nèi)一對(duì)多的數(shù)據(jù)展示示例代碼
最近做項(xiàng)目遇到這樣的需求要求將表中的數(shù)據(jù),按照一級(jí)二級(jí)分類返回給前端json數(shù)據(jù),下面通過本文給大家分享通過Mybatis實(shí)現(xiàn)單表內(nèi)一對(duì)多的數(shù)據(jù)展示示例代碼,感興趣的朋友參考下吧2017-08-08java獲取當(dāng)前時(shí)間并格式化代碼實(shí)例
這篇文章主要介紹了java獲取當(dāng)前時(shí)間并格式化代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08Springboot全局異常捕獲及try catch區(qū)別解析
這篇文章主要介紹了Springboot全局異常捕獲及try catch區(qū)別解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06詳解在Spring MVC或Spring Boot中使用Filter打印請(qǐng)求參數(shù)問題
這篇文章主要介紹了詳解在Spring MVC或Spring Boot中使用Filter打印請(qǐng)求參數(shù)問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04利用JSONObject.toJSONString()包含或排除指定的屬性
這篇文章主要介紹了利用JSONObject.toJSONString()包含或排除指定的屬性,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03springboot項(xiàng)目中application.properties無法變成小樹葉問題解決方案
這篇文章主要介紹了springboot項(xiàng)目中application.properties無法變成小樹葉問題解決,本文通過圖文實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-09-09