【Java项目】GUI图形用户界面(不断更新中!)
<目录>
(2) FlowLayout(顺序布局器:容器上的组件水平摆放)
(3) BorderLayout(边框布局器:容器上的组件按上北、下南、左西、右东、中的顺序摆放)
(4) GridLayout(网格布局器:容器上的组件按网格区域摆放)
(5) setPreferredSize(使用布局器的时候,改变组件显示大小,仅部分有效)
<正文内容>
<创建一个简单的窗体>
package practice;
import javax.swing.JButton;
import javax.swing.JFrame;
public class Test {
public static void main(String[] args) {
JFrame f=new JFrame("Kannyi的窗体"); //主窗体,括号里面是标题
f.setSize(400,300); //主窗体设置大小,宽400高300
f.setLocation(200, 200); //主窗体设置位置,距离(屏幕左侧200,屏幕上方200)
f.setLayout(null); //主窗体中的组件设置为绝对定位
JButton b=new JButton("Kannyi的按钮");//按钮组件,还没设置功能
b.setBounds(50,50,280,30); //同时设置组件的位置和大小
f.add(b); //把按钮加入到主窗体中
//关闭窗体时,退出程序,不关会越来越卡
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//让窗体可见
f.setVisible(true);
}
}
界面如下:

<如何进行事件监听>
(1)按钮监听
package practice;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class Test {
public static void main(String[] args) {
JFrame f=new JFrame("Kannyi的窗体"); //主窗体,括号里面是标题
f.setSize(400,300); //主窗体设置大小,宽400高300
f.setLocation(580,200); //主窗体设置位置,距离(屏幕左侧200,屏幕上方200)
f.setLayout(null); //主窗体中的组件设置为绝对定位
//标签,用于显示信息,比如文本或图像
JLabel l1=new JLabel();
//获取图像
ImageIcon i=new ImageIcon("C:/Users/ASUS/Pictures/其他/img.png");
//设置指定的图像到标签中
l1.setIcon(i);
//设置标签的位置和大小
l1.setBounds(50,50,i.getIconWidth(),i.getIconHeight());
JLabel l2=new JLabel();
l2.setText("Kannyi的文本"); //设置指定的文本到标签中
l2.setBounds(30, 30, 80, 12); //设置标签的位置和大小,高度太高排版会出问题,12正好
JButton b=new JButton("隐藏图片"); //按钮组件
b.setBounds(250,200,100,30);
//给按钮增加监听
//写法1
/*----------------------------------------------
b.addActionListener(new ActionListener(){
//当按钮被点击时,actionPerformed方法就会被执行
//就会触发ActionEvent事件
public void actionPerformed(ActionEvent e) {
l.setVisible(false);
}
});
-----------------------------------------------*/
//写法2
b.addActionListener(e->l1.setVisible(false));
f.add(b);
f.add(l1);
f.add(l2);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
界面如下:

(2)键盘监听
package practice;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class Test {
public static void main(String[] args) {
JFrame f = new JFrame("Kannyi的窗体");
f.setSize(400, 300);
f.setLocation(580, 200);
f.setLayout(null);
JLabel l = new JLabel();
ImageIcon i = new ImageIcon("C:/Users/ASUS/Pictures/其他/img.png");
l.setIcon(i);
l.setBounds(50, 50, i.getIconWidth(), i.getIconHeight());
//增加键盘监听
f.addKeyListener(new KeyListener() {
//键被弹起
public void keyReleased(KeyEvent e) {
//左键37 上键38 右键39 下键40
/*
可用下面这个函数知道键位的Code
System.out.println(e.getKeyCode());
*/
if (e.getKeyCode() == 37) {
//图片向左移动 (x坐标减少,y坐标不变)
l.setLocation(l.getX() -10, l.getY());
}
if (e.getKeyCode() == 38) {
//图片向上移动 (x坐标不变,y坐标减少)
l.setLocation(l.getX(), l.getY() - 10);
}
if (e.getKeyCode() == 39) {
//图片向右移动 (x坐标增加,y坐标不变)
l.setLocation(l.getX() + 10, l.getY());
}
if (e.getKeyCode() == 40) {
//图片向下移动 (x坐标不变,y坐标增加)
l.setLocation(l.getX(), l.getY() + 10);
}
}
//键被按下,可以实现连续运动
//之前被定义过的键位就不能用了
public void keyPressed(KeyEvent e) {
}
// 一个按下弹起的组合动作
//不会用!!!
public void keyTyped(KeyEvent e) {
}
});
f.add(l);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
界面如下(看不出什么特别,因为要用键盘实现上下左右操作):

(3)鼠标监听
package practice;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Random;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class Test {
public static void main(String[] args) {
JFrame f = new JFrame("Kannyi的窗体");
f.setLayout(null);
f.setSize(500, 400);
f.setLocationRelativeTo(null); //设置窗体在屏幕正中央
JLabel l = new JLabel();
ImageIcon i = new ImageIcon("C:/Users/ASUS/Pictures/其他/img.png");
l.setIcon(i);
l.setBounds(150, 100, i.getIconWidth(), i.getIconHeight());
/*
//鼠标监听-方法1
//这种方法的缺点在于每个方法都要写出来,很麻烦
l.addMouseListener(new MouseListener() {
//释放鼠标
public void mouseReleased(MouseEvent e) {
}
//按下鼠标
public void mousePressed(MouseEvent e) {
}
//鼠标退出
public void mouseExited(MouseEvent e) {
}
//鼠标进入
public void mouseEntered(MouseEvent e) {
//Random r.nextInt(int n)可以随机生成一个[0,n)的区间
Random r = new Random();
//下面的相减操作是防止图片随机到窗体外
int x = r.nextInt(f.getWidth() - l.getWidth());
int y = r.nextInt(f.getHeight() - l.getHeight());
l.setLocation(x, y);
}
//按下释放组合动作为点击鼠标
public void mouseClicked(MouseEvent e) {
}
});
*/
//鼠标监听-方法2
//用适配器,只需要重写用到的方法即可,较为方便
l.addMouseListener(new MouseAdapter() {
//只有mouseEnter用到了
public void mouseEntered(MouseEvent e) {
Random r=new Random();
int x=r.nextInt(f.getWidth()-l.getWidth());
int y=r.nextInt(f.getHeight()-l.getHeight());
l.setLocation(x, y);
}
});
f.add(l);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
界面如下(看不出什么特别,因为要用鼠标实现操作):

<容器>
(1)创建一个简单的对话框
package practice;
import javax.swing.JButton;
import javax.swing.JDialog;
public class Test {
public static void main(String[] args) {
JDialog d=new JDialog(); //对话框
d.setTitle("Kannyi的对话框"); //设置对话框的标题
d.setSize(400,300);
d.setLocation(200,200);
d.setLayout(null);
JButton b=new JButton("kannyi的按钮");
b.setBounds(50,50,280,30);
d.add(b);
d.setVisible(true);
}
}
界面如下:

(2)创建一个简单的模态对话框(父窗体不能被激活,除非对话框关闭)
package practice;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
public class Test {
public static void main(String[] args) {
JFrame f=new JFrame("Kannyi的外部窗体");
f.setSize(600, 500);
f.setLocation(100, 100);
JDialog d=new JDialog(f); //根据外部窗体实例化JDialog
d.setModal(true); //设置为模态,其后的父窗体不能被激活,除非对话框关闭
d.setTitle("Kannyi的模态对话框");
d.setSize(400,300);
d.setLocation(200,200);
d.setLayout(null);
JButton b=new JButton("Kannyi的按钮");
b.setBounds(50,50,280,30);
d.add(b);
f.setVisible(true);
d.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
界面如下:

(3)使窗体大小不可变化
package practice;
import javax.swing.JButton;
import javax.swing.JFrame;
public class Test {
public static void main(String[] args) {
JFrame f=new JFrame("Kannyi的窗口");
f.setSize(400,300);
f.setLocation(200, 200);
f.setLayout(null);
JButton b=new JButton("Kannyi的按钮");
b.setBounds(50, 50, 280, 30);
f.add(b);
//窗体大小不可变化
f.setResizable(false);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
界面如下:

<布局器>
(1)绝对定位
package practice;
import javax.swing.JButton;
import javax.swing.JFrame;
public class Test {
public static void main(String[] args) {
JFrame f=new JFrame("Kannyi的窗体");
f.setSize(400,300);
f.setLocation(200,200);
//绝对定位:设置布局器为null,容器上的组件都需要指定位置和大小
f.setLayout(null);
JButton b1=new JButton("按钮1");
b1.setBounds(50,50,70,30);
JButton b2=new JButton("按钮2");
b2.setBounds(150,50,80,30);
//没有指定位置和大小,不会出现在容器上
JButton b3=new JButton("按钮3");
f.add(b1);
f.add(b2);
f.add(b3);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
界面如下:

(2)FlowLayout
package practice;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
public class Test {
public static void main(String[] args) {
JFrame f=new JFrame("Kannyi的窗体");
f.setSize(400,300);
f.setLocation(200, 200);
//设置布局器为FlowLayrout
//容器上的组件水平摆放
f.setLayout(new FlowLayout());
JButton b1=new JButton("按钮1");
JButton b2=new JButton("按钮2");
JButton b3=new JButton("按钮3");
//加入到容器,无需单独指定大小和位置
f.add(b1);
f.add(b2);
f.add(b3);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
界面如下:

(3)BorderLayout
package practice;
import java.awt.BorderLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
public class Test {
public static void main(String[] args) {
JFrame f=new JFrame("Kannyi的窗体");
f.setSize(400,300);
f.setLocation(200,200);
//设置布局为BorderLayout
//容器上的组件按照 上北 下南 左西 右东 的顺序摆放(可以自己设置)
f.setLayout(new BorderLayout());
JButton b1 = new JButton("按钮1");
JButton b2 = new JButton("按钮2");
JButton b3 = new JButton("按钮3");
JButton b4 = new JButton("按钮4");
JButton b5 = new JButton("按钮5");
//加入到容器的时候,需要指定位置
f.add(b1, BorderLayout.NORTH);
f.add(b2, BorderLayout.SOUTH);
f.add(b3, BorderLayout.WEST);
f.add(b4, BorderLayout.EAST);
f.add(b5, BorderLayout.CENTER);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
界面如下:

(4)GridLayout
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
public class Test {
public static void main(String[] args) {
JFrame f = new JFrame("Kannyi的窗体");
f.setSize(400, 300);
f.setLocation(200, 200);
// 设置布局器为GridLayerout,即网格布局器
// 该GridLayerout的构造方法表示该网格是2行3列
f.setLayout(new GridLayout(2, 3));
JButton b1 = new JButton("甲");
JButton b2 = new JButton("乙");
JButton b3 = new JButton("丙");
JButton b4 = new JButton("丁");
JButton b5 = new JButton("戊");
f.add(b1);
f.add(b2);
f.add(b3);
f.add(b4);
f.add(b5);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
界面如下:

(5)setPreferredSize
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
public class Test {
public static void main(String[] args) {
JFrame f = new JFrame("Kannyi的窗体");
f.setSize(400, 300);
f.setLocation(200, 200);
f.setLayout(new FlowLayout());
JButton b1 = new JButton("甲");
JButton b2 = new JButton("乙");
JButton b3 = new JButton("丙");
// 即便使用布局器,也可以通过setPreferredSize,向布局器建议该组件显示的大小
b3.setPreferredSize(new Dimension(180, 40));
f.add(b1);
f.add(b2);
f.add(b3);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
界面如下:

(6)CardLayout
界面如下:
<组件>
(1)标签
界面如下:
(2)使用JLabel显示图片
界面如下:
(3)按钮
界面如下:
(4)复选框
界面如下:
(5)单选框
界面如下:
(6)按钮组
界面如下:
(7)下拉框
界面如下:
(8)对话框
界面如下:
(9)文本框
界面如下:
(10)密码框
界面如下:
(11)文本域
界面如下:
(12)进度条
界面如下:
(13)文件选择器
界面如下:
<面板>
(1)基本面板
界面如下:
(2)ContentPane
界面如下:
(3)SplitPanel
界面如下:
(4)JScrollPanel
界面如下:
(5)TabbedPanel
界面如下:
(6)CardLayerout
界面如下:
<菜单>
(1)菜单栏和菜单
package practice;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
public class Test33 {
public static void main(String[] args) {
JFrame f = new JFrame("Kannyi");
f.setSize(400, 300);
f.setLocation(200, 200);
//菜单栏
JMenuBar mb = new JMenuBar();
//菜单
JMenu mHero = new JMenu("英雄");
JMenu mItem = new JMenu("道具");
JMenu mWord = new JMenu("符文");
JMenu mSummon = new JMenu("召唤师");
JMenu mTalent = new JMenu("天赋树");
//把菜单加入到菜单栏
mb.add(mHero);
mb.add(mItem);
mb.add(mWord);
mb.add(mSummon);
mb.add(mTalent);
//把菜单栏加入到frame,这里用的是set而非add
f.setJMenuBar(mb);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
界面如下:

(2)菜单项
package practice;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
public class Test34 {
public static void main(String[] args) {
JFrame f = new JFrame("Kannyi的窗体");
f.setSize(500, 400);
f.setLocation(200, 200);
JMenuBar mb = new JMenuBar();
JMenu mHero = new JMenu("英雄");
JMenu mItem = new JMenu("道具");
JMenu mWord = new JMenu("符文");
JMenu mSummon = new JMenu("召唤师");
JMenu mTalent = new JMenu("天赋树");
//菜单项
mHero.add(new JMenuItem("近战"));
mHero.add(new JMenuItem("远程"));
mHero.add(new JMenuItem("物理"));
mHero.add(new JMenuItem("坦克"));
mHero.add(new JMenuItem("法系"));
mHero.add(new JMenuItem("辅助"));
mHero.add(new JMenuItem("打野"));
mHero.add(new JMenuItem("突进"));
mHero.add(new JMenuItem("男性"));
mHero.add(new JMenuItem("女性"));
//分隔符
mHero.addSeparator();
mHero.add(new JMenuItem("所有"));
mb.add(mHero);
mb.add(mItem);
mb.add(mWord);
mb.add(mSummon);
mb.add(mTalent);
f.setJMenuBar(mb);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
界面如下:

<工具栏>
(1)工具栏
界面如下:
(2)给按钮设置提示信息
界面如下:
(3)禁止工具栏拖动
界面如下:
<表格>
(1)基本表格
界面如下:
(2)JScrollPane
界面如下:
(3)列宽
界面如下:
(4)TableModel
界面如下:
(5)进一步理解TableModel
界面如下:
(6)TableModel与DAO结合
界面如下:
(7)TableSelectionModel
界面如下:
(8)更新Table
界面如下:
(9)输入项验证
界面如下:
(10)选中指定行
界面如下:
<日期控件>
(1)DatePicker
界面如下:
(2)JXDatePicker
界面如下:
<Swing中的线程>
(1)三种线程
界面如下:
(2)事件调度线程是单线程的
界面如下:
(3)初始化线程
界面如下:
(4)事件调度线程
界面如下:
(5)长耗时任务线程
界面如下:
<皮肤>
界面如下:
【Java项目】GUI图形用户界面(不断更新中!)的更多相关文章
- java第八节 GUI/图形用户界面
/* *第8讲 GUI/图形用户界面 * AWT的基础知识 * GUI全称是Graphical User Interface,即图形用户界面 * JDK中提供了AWT和Swing两个包,用于GUI程序 ...
- AWT是Java基础类 (JFC)的一部分,为Java程序提供图形用户界面(GUI)的标准API
抽象窗口工具包 (Abstract Windowing Toolkit) (AWT)是Java的平台独立的窗口系统,图形和用户界面器件工具包. AWT是Java基础类 (JFC)的一部分,为Java程 ...
- 黑马程序员_<<GUI(图形用户界面)--------1>>
--------------------ASP.Net+Android+IOS开发..Net培训.期待与您交流! -------------------- 1. GUI图形用户界面 1.简述 Gra ...
- JAVA记事本的图形用户界面应用程序含过滤
JAVA记事本的图形用户界面应用程序 过滤 题目简介: 整体分析: 实验代码: package note; import java.awt.EventQueue; import java.awt.ev ...
- JAVA记事本的图形用户界面应用程序含加密
JAVA记事本的图形用户界面应用程序 加密 题目简介: 整体分析: 实验代码: import java.awt.EventQueue; import java.awt.event.ActionEven ...
- JAVA记事本的图形用户界面应用程序
JAVA记事本的图形用户界面应用程序 整体分析: 代码实现: import java.awt.EventQueue; import java.awt.event.ActionEvent; import ...
- java GUI(图形用户界面)
GUI Graphical User Interface(图形用户接口). 用图形的方式,来显示计算机操作的界面,这样更方便更直观. CLI Command line User Interface ( ...
- linux系统中firewalld防火墙管理工具firewall-config(GUI图形用户界面)
firewall-config是firewalld防火墙管理工具的GUI(图形用户界面)版本,几乎可以实现所有以命令行来执行的操作. firewall-config的界面如下图(在终端直接运行fire ...
- 十一:Java之GUI图形Awt和Swing
一. AWT和 Swing AWT 和 Swing 是 Java 设计 GUI用户界面的基础.与 AWT 的重量级组件不同,Swing 中大部分是轻量级组件.正是这个原因,Swing 差点儿无所不能, ...
- GUI(图形用户界面)
一.GUI(图形用户界面) GUI Graphical User Interface(图形用户接口) 用图形的方式,来显示计算机操作的界面,这样更方便更直观 CLI Command line User ...
随机推荐
- LeetCode 514----Freedom Trail
问题描述 In the video game Fallout 4, the quest "Road to Freedom" requires players to reach a ...
- Architecture And Framework
高屋建瓴 From Up to Down. Outside into inside. Interface-Oriented Framework with dynamic configuration. ...
- (WCF) 多线程 (Multi-threading) 和 并发性 (Concurency)
问题:WCF 有个Server端,还有个Client端,他们之间是如何进行并发,多线程通信的呢?多个Client端同时访问Server,如何保证Server端的操作线程安全呢? 在理解WCF Conc ...
- 1.Mysql简介
1.MySQL是一个关系型数据库管理系统. MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 最流行的关系型数据库管理系统,在 WE ...
- 安装 GraphicsMagick
yum -y install GraphicsMagick GraphicsMagick-devel 实际试了试,上面yum的方式不好使,下面是我实际安装过程: 1.下载最新版 wget ftp:// ...
- kettle使用命令行传入数据库链接参数(ip、数据库、端口、用户、密码)执行job时子转换失败。
使用cmd 传参数执行 kettle job 遇到错误: 错误原因,无法找到文件.... 原来使用,通过目录指定转换,好处是:当以文件资源库保存时,可以直接将文件夹复制走,直接运行就可以,不需要单独针 ...
- Java BigDecimal初探
更新时间:2016-03-17 一.引言 <Effactive Java>中有这样的描述:float和double类型的主要设计目标是为了科学计算和工程计算.他们执行二进制浮点运算,这是为 ...
- 采用powershell创建project网站集(摘抄自https://www.cnblogs.com/jindahao/p/5855668.html)
采用powershell创建project网站集,具体步骤如下 1.输入License Enable-ProjectServerLicense –Key "23CB6-N4X8Q-WWD7M ...
- Windows事件--重复事件检测
监视器--Windows事件--重复事件检测--计时器重置: 自动重置计时器:指定等待时间10分钟,则在10分钟后自动关闭该警报,更改状态为 正常(绿色) 检测事件1,事件3重置计数器状态,2分钟内检 ...
- Python学习---Python安装与基础1205
1.0. 安装 1.1.1. 下载 官网下载地址:https://www.python.org/downloads/release/python-352/ 1.1.2. 配置环境变量 因为在安装的时候 ...