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)用程序的開(kāi)發(fā)包。
3.Swing 是為了解決 AWT 存在的問(wèn)題而新開(kāi)發(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)格沒(méi)有空隙
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("打開(kāi)");
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("打開(kāi)", 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ù)提交和回滾的,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02
通過(guò)Mybatis實(shí)現(xiàn)單表內(nèi)一對(duì)多的數(shù)據(jù)展示示例代碼
最近做項(xiàng)目遇到這樣的需求要求將表中的數(shù)據(jù),按照一級(jí)二級(jí)分類返回給前端json數(shù)據(jù),下面通過(guò)本文給大家分享通過(guò)Mybatis實(shí)現(xiàn)單表內(nèi)一對(duì)多的數(shù)據(jù)展示示例代碼,感興趣的朋友參考下吧2017-08-08
java獲取當(dāng)前時(shí)間并格式化代碼實(shí)例
這篇文章主要介紹了java獲取當(dāng)前時(shí)間并格式化代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08
Springboot全局異常捕獲及try catch區(qū)別解析
這篇文章主要介紹了Springboot全局異常捕獲及try catch區(qū)別解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06
詳解在Spring MVC或Spring Boot中使用Filter打印請(qǐng)求參數(shù)問(wèn)題
這篇文章主要介紹了詳解在Spring MVC或Spring Boot中使用Filter打印請(qǐng)求參數(shù)問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
利用JSONObject.toJSONString()包含或排除指定的屬性
這篇文章主要介紹了利用JSONObject.toJSONString()包含或排除指定的屬性,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
springboot項(xiàng)目中application.properties無(wú)法變成小樹葉問(wèn)題解決方案
這篇文章主要介紹了springboot項(xiàng)目中application.properties無(wú)法變成小樹葉問(wèn)題解決,本文通過(guò)圖文實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-09-09

