idea前端可视化_IntelliJ IDE 开发Java GUI 入门

本博客主要对java 的GUI相关知识进行简单的介绍和总结,整个博客按照创建一个java GUI的顺序进行介绍,期间穿插讲解用到的java Swing的布局、控件等相关知识。本博客所进行的讲解及工程的创建等,都是基于Intellij IDEA进行操作的。

转载请注明出处...虽然感觉没人会用这个技术吧...

一、创建Gradle管理的java工程

1.在Intellij IDEA的首页,选择Create New Project

首页选择创建新工程

2.点击之后,界面会跳转到如下界面,按照图中选择后,点击next即可(另图中*处标明你必须确保你已经为你的intellij配置过了jdk的路径)。

选择gradle

3.之后,会弹出如下界面,填写GroupId和ArtifactId即可,填写之后继续点击next。

填写groupId和ArtifactId

4.然后会弹出如下界面,并按图中红框标注进行选择,选择完毕后再次点击next。

选择gradle配置

5.然后就到了最后一步,填写工程名称,并选择工程所在路径,如图,填写和设置完成后,点击finish即可。

填写工程名称和路径

6.在intellij的左侧即可显示出创建完成的工程,如下图所示:

初始创建的工程目录

以上就是使用intellij IDEA 创建一个gradle工程的简单引导过程,具体的还要以实际操作为准。

二、创建页面

因为这是鄙人整理的关于java GUI的知识文档,所以这一节是最重要的,毕竟GUI中,页面是它最大的特色。但鄙人才疏学浅,也只能是介绍些基础知识和它们的基本用法,希望可以起到抛砖引玉的作用。

1. 创建一个GUI页面的流程:

在上述第一节中创建的gradle工程中,在其目录中选择如下文件夹(或者你也可以另外在main文件夹下创建新的文件夹):

右击java

右击后,选择new-->GUI Form,点击GUI Form后,会出现如下对话框:

guiformdialog

在其中输入Form name,则下方的Class name默认与Form name相同,例如输入Test,点击ok后,即生成如下的组合文件:

Test组合文件

这两个文件中,Test.form 即为放置GUI中的布局和控件的地方,类似于Android中的xml布局文件或者说是前端的html文件,或者说是iOS的StoryBoard之类的。可以认为,用户最终看到和接触到的就是就是这个文件展示的效果。另外的Test类,则是Test.form文件对应的捆绑类,在这其中主要进行Test.form页面相关的逻辑处理,包括Test.form文件中的各个控件的各种事件,用到的数据的处理等等。

在这里鄙人只对Test类中的一些共性操作作简单介绍,具体的逻辑处理则因页面功能而异,需要大家自己去具体处理了;而对Test.form中放置的布局、控件等则会进行较为详细的介绍,包括布局的基本属性和用法,控件的基本属性和用法等等。

先给大家看个最简单的效果:

巨特么简单的效果

上面这个巨简单的效果图,就是通过GUI Form创建的页面代码run之后生成的java的桌面程序。

它虽然简单,但是却包含了使用Intellij IDEA 创建java GUI Form程序的完整流程,下面鄙人对这个完整流程进行简单介绍:

首先需要说明,这个页面中包含的控件,只有一个JLabel是本人放置的,其它的控件都是系统自动生成的,它的Component Tree(其实就是组件的节点组合效果) 显示如下:

componenttree

下面说具体的创建流程:即点击下图中1处的JLabel控件,然后再点击2处系统默认生成的Jpanel,就搞定了。。

拖放JLabel

之后,则需要进行属性的设置,说到属性的设置,对每个控件都只有设置了它的filed name,才会在该GUI Form文件对应的捆绑类中生成对应的控件对象。

所以针对上图拖放的JLabel,需要修改它的fieldName,暂且改为testLabel,而系统默认生成的JPanel则改为rootPanel。然后简单设置testLabel 的text属性,即设置它的显示文字,如下图中选择testLabel的text属性,点击后输入文字,再点击键盘的enter即可。

设置testLabel的文字

这样test.form文件的控件摆放和控件属性设置就完成了,接下来来到Test这个类文件中,可以看到在其中已经生成了两个控件对象,如下图,这两个控件就是我们设置了field name 的控件:

只有控件

然后就是最关键的一步操作了,在当前的Test类的界面执行如下操作:右击当前类的{}所包含界面-->选择Generate-->选择Form main(),点击后即会生成如下代码:

生成main函数

之后运行工程,即可显示出上述最简单的页面效果了。

2. 控件和布局

接下来,鄙人再对GUI Form中常用的布局和控件进行简单的介绍,当然,由于这些布局或控件的数量比较多,所以我也只是对其中的某一个进行属性和用法的简单介绍,至于其他的,大家可以参考这些介绍,自行尝试即可。

2.1 布局

下面先说布局,在GUI Form中提供了以下几种选择:BorderLayout,CardLayout,FlowLayout,FormLayout(JGoodies),GridBagLayout,GridLayoutManager(Intellij)等。在这里鄙人只简单讲解GridLayoutManager(Intellij)这个布局的使用。

目前来说,根据鄙人为数不多的使用经验来看,通过这个GridLayoutManager的布局,加上JPanel的使用,一般是可以实现任何布局上的效果的。比如,实现上下左右四个panel的效果:

简单的例子

上述效果的实现就是在系统的rootPanel的布局属性上选择GridLayoutManager(Intellij)后,再依次拖放四个JPanel控件到rootPanel,然后简单的调整各个控件的大小,给各个JPanel设置不同的背景色后实现的效果。

设置JPanel的布局

好了,关于布局的用法,就简单说到这里,因为它们的用法都太灵活了,需要大家去亲自实践,才能更好的实现你需要的效果。

2.2 控件

下面就讲解控件的属性和用法,就以最常用的JButton为例来对它的属性和基本用法进行讲解:

先来看下面两个截图中的GUI Form文件提供的Button控件的所有属性(需要勾选show expert properties),:

JButton所有属性1

JButton所有属性2

下面再针对上面两个截图中红框中的属性进行简单讲解,其他的属性鄙人也没有用过就不多说了,靠大家自己去尝试了。

HorizontalSizePolicy 水平尺寸策略

可选择的值有can shrink,can grow,fixed,其效果都是跟它的字面意思差不多:

can shrink:水平大小可以收缩

can grow : 水平大小可以扩展

fixed:水平大小固定

请注意,如果JButton设置了prefered Size , MinimumSize , MaximumSize,且这个三个值都是一样的,那么就会使当前的HorizontalSizePolicy属性失效。

VerticalSizePolicy 竖直尺寸策略,同上,只是是竖直方向的。

HorizontalAlign  水平对齐方式

设置button位置的水平对齐方式,可选择的值有:

left:位置居左

right:位置居右

center:位置居中

fill:充满父容器

其作用也是同字面意思,但是button的位置是相对于父控件而言的,即一般都是Panel类型的控件。

VerticalAlign竖直对齐方式,同上水平对齐方式。

MinimumSize:最小尺寸,PreferedSize:希望呈现的尺寸,MaximumSize:最大尺寸。

这三个属性是一组的,默认值都是[-1, -1],但是想要设置button为某个具体的尺寸则需要将它们三个的值设置成一样的。

background:背景色

enabled:是否可以交互。默认都是可以交互的,取消选中后则不可交互。

font: 字体大小,点击后可选择其大小值。

foreground:字体颜色。

icon:设置按钮上的图片,点击后会引导你在工程目录中选择,所以需要设置图片的话,需要提前放到工程中。

margin:外边距,同所有的其他语言中的margin一样。

opaque: 不透明

该属性一般控件默认是选中的,但是有个特殊情况:JLabel,这个控件的该属性是默认不选中的,这时候,你若设置JLabel的背景就会发现,它死活不显示背景色。只有当JLabel的opaque属性选中后才会显示。

text:文字,即设置按钮上的文字

另外,提到按钮,最最最重要的当然是它的点击事件辣,所以这里鄙人也为大家提供一种创建某个控件的监听事件的快捷方式:

在Form文件中,右击要创建监听事件的控件

选择Create Listener

然后就会弹出一堆的监听事件,按钮的监听事件即为第一个ActionListener,选择后会回到该Form文件对应的class文件中,弹出如下对话框:

创建按钮事件监听器的弹出对话框

点击ok即可完成创建,创建完成后,会在该Form文件对应的class文件中生成如下代码,在其中的actionPerformed()方法中即可完成相应的逻辑处理。

自动生成的监听事件代码

好了,至此就算是勉强给大家开了个java GUI相关内容的门缝,具体的掌握这个冷门的技术还是需要大家在用到的时候,亲自去上手实践才是。下面附上一些可能大家会想要了解的Java Swing相关介绍的博客链接:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/442968.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

载winpcap4.1.1_最常用的11个电缆载流量数据表,建议收藏备用

《0.6/1KV聚氯乙烯绝缘电力电缆载流量》《1~3芯额定电压0.6/1kv-1.8/3kv电缆载流量表》《YJV、YJY、YJV22额定电压在6/6、6/10kv电缆载流量》《常见BVVB型、BLVVB型、RVVB型电线载流量》《常见BV线载流量》《矿物质绝缘电缆载流量表》载流量数据表,是我们在日常工作…

android 虚拟键盘改变单个按键颜色_这款机械键盘很特别!一亿次按键寿命还有高颜值...

电脑主机要上RGB,那外设自然不能落下,虽说没有60%性能加成,用炫酷的灯光点亮桌面的感觉也是不错的。德国老牌外设品牌——冰豹(ROCCAT)2018年发布了Vulcan系列机械键盘,凭借着独特的设计和AIMO智能灯效颇受玩家好评。现在&#xf…

C++设计模式 #6 桥模式(Bridge)

动机 由于某些类型的固有的实现逻辑,使得它们具有两个变化的维度,乃至多个变化的维度。 如何应对这种“多维度的变化”?如何利用面向对象技术来使得类型可以轻松地沿着两个乃至多个方向变化,而不引入额外的复杂度 举个栗子 我们…

c99什么意思_C语言中-是什么意思啊?

展开全部->是一个整体,它是用于指向结构体、C中的class等含有子数据的指针用e5a48de588b662616964757a686964616f31333366303130来取子数据。换种说法,如果我们在C语言中定义了一个结构体,然后申明一个指针指向这个结构体,那么…

mysql排序加权_mysql多关键词查询相关匹配加权排序

SELECT id, title, SUM((CASE WHEN title LIKE %复仇者% THEN 1 ELSE 0 END)(CASE WHEN title LIKE %联盟% THEN 1 ELSE 0 END)) as rnt FROM hash WHERE title LIKE %联盟% group by id ORDER by rnt DESC关键1.就是这个SUM()求和函数关键2.该SUM函数要搭配子句:gr…

mysql外键关联查询_MySQL外键约束和多表联查

一.创建外键#测试数据表# 教师表,主表CREATE TABLE teacher(id INT PRIMARY KEY AUTO_INCREMENT,name varchar(20),age INT)ENGINEInnoDB DEFAULT CHARSETUTF8;#测试数据:INSERT INTO teacher values(1,范冰冰,22),(2,周杰棍,30),(3,双杰伦,35),(4,梁朝伟…

mysql innodb id_MySQL InnoDB row_id边界溢出验证的方法步骤

背景跟同学聊到row_id一个边界问题,这里详细说明下。InnoDB表若没有定义主键,会使用系统的一个默认递增row_id (dict_sys->row_id)作为主键。每次插入一行加1,到达最大值循环复用。需要注意的是,虽然dict_sys->row_id 被定义…

mysql memcached java_java缓存技术memcached实例

1 下载memcached-1.2.1-win32.zip 并且解压.2 新建web project项目 名字自己取,然后导入必要的包,alisoft-xplatform-asf-cache-2.5.1.jar,commons-logging-1.0.3.jar,log4j-1.2.13.jar3 新建类 user.javapackage bean;import java.io.Serializable;public class User impleme…

编译安装mysql5.6.36_MySQL5.6.36编译安装

一、MySQL5.6.36安装前准备(1)克隆一个模板机器(使用centos6),克隆完做快照(2)IP 10.0.0.52 主机名db02(3)iptables selinux(4)下载好5.6.36(5)安装依赖包yum install -y ncurses-devel libaio-devel cmake(6)安装cmakeyum install cmake –y(7)创建用户useradd -s …

mysql mysqld.sock_MySQL笔记-最简单的方法来解决找不到mysqld.sock文件的问题

首先,环境:ubuntu 14.04,采用apt-get的方式安装的,手动安装可能路径设置稍有区别。1、安装MySQL后,用命令行首次启动时发现找不到Mysqld.sock文件,提示:ERROR 2002 (HY000): Cant connect to local MySQL server throu…

plan explorer mysql_plan explorer支持oracle吗

展开全部1.SQL语句的执行62616964757a686964616fe58685e5aeb931333361326365计划使用EXPLAIN PLAN语句来确定Oracle数据库下指定SQL语句的执行计划,这个语句插入每一步执行计划的行描述到指定表中。你也可使用EXPLAIN PLAN语句作为SQL跟踪工具的一部分。EXPLAIN PLA…

python 列表转图结构_Python读取网络(图)边列表数据进而转化为邻接矩阵

import networkx as nxG nx.Graph()path ./edge_list.txtedge_list []node_set set() #集合的特性就是元素不会重复,互异的with open(path, r) as f:for line in f:cols line.strip().split( )y1int(cols[0])y2int(cols[1])node_set.add(y1)node_set.add(y2)ed…

r语言读写word_R语言:在word中插入ggplot

最近CRAN上新了一个叫eoffice的package,并且不时被各路大佬提起。这个包的功能刚好也符合我最近的需求,这次带各位先来试试水。包的官方介绍:1. Introduction​cran.r-project.org这次主要试试在word中用该包插入ggplot。既然要试&#xff0c…

hamburger组件_一个侧边栏导航组件实现思路

翻译:布兰作者:Adam Argyle来源:https://web.dev/building-a-sidenav-component/在这篇文章中,我想和大家分享我是如何为 web 原型化一个 Sidenav 组件的,这个组件是响应式的,有状态的,支持键盘…

centos php mysql 5.6 安装_centos7安装nginx、php5.5、mysql5.6

一、nginx1、安装yum install nginx2、启动systemctl start nginx关闭:systemctl stop nginx 重启:systemctl restart nginx 检查状态:systemctl status nginx3、测试浏览器直接访问http://ip,应该会看到以下界面:4、支持php打开/…

myeclipse怎么导入mysql驱动_myeclipse sql导入数据库驱动包

如何配置strutshibernate,基本使用方法不少童鞋在自学SSH框架的时候,难在创建第一个项目,如何搭建好这些框架,很多书上只是给出了代码但是没有教如何使用,所以在本次博客中将会图文结合来说一下如何使用struts结合hibe…

mysql 报表统计sql使用实例_mysql 案例~mysql元数据的sql统计

一 简介:今天我们来收集下提取元数据的sql二 前沿: information_schema 引擎 memory 元数据收集表三 sql语句:1#没有使用索引的表统计SELECT t.TABLE_SCHEMA,t.TABLE_NAME,t.TABLE_ROWS FROM information_schema.tables AS t LEFT JOIN (SELECT DISTINCT table_schema, table_…

创建或更改表 tablename 失败_mysql 创建用户

一. 创建用户命令:CREATE USER usernamehost IDENTIFIED BY password;说明:username:你将创建的用户名host:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆&#…

linux忘记mysql登录用户密码_linux中忘记mysql用户root密码解决方案

1.vim /etc/my.cnf[mysqld]skip-grant-tables ##追加此行,跳过权限表,2.重启mysqlsystemctl restart mysqld3.mysql 登陆mysqlmysql> use mysql;mysql> UPDATE user SET Password password ( ‘zha123456‘ ) WHERE User ‘root‘ ;mysql> fl…

sql2000 mysql 兼容_SQL Server2000如何恢复数据库

以里诺仓库管理软件(SQL网络版)为例,如果您因电脑操作系统重装,需要把以前备份的数据库恢复过来,请您按如下操作来。首先,您需要安装MS SQL Server2000。1. 以Windowns XP为例,SQL Server个人版安装完成后,…