Swing界面设计工具的第一步

Java界面设计 五.Java界面设计 Java界面设计的用途 1.Java界面设计的用途      ①Java的图形界面工具包,可以用于工具类软件开发、管理类软件开发、通用客户端开发、银行客户端软件开发、eclipse插件开发等方面。在许多知名的大型软件中,都能够见到Java的身影,如某些版本的Photoshop、思维导图软件、eclipse、IDEA开发环境等      ②开发者也可以使用Java为自己 阅读详情
  http://blog.sina.com.cn/s/blog_4b6047bc01000bex.html

  解决复杂问题常用的一个方法是分析综合法,或曰分而治之,即将复杂的问题分解成简单的子问题。解决了每个子问题后,再将它们集成起来。若每个子问题还是太复杂,则可重复此过程直至简单到容易解决为止。如果问题本身比较复杂,但又不容易继续分下去,则可试着将问题模型进行简化,在此基础上开发出原型后,再陆续添加其其他功能,逐步丰富直至接近问题的原始规模。
    Swing界面设计工具是比较复杂的软件系统。在开发之前,我们应该先将它进行分析简化。根据以前的经验,这类工具的功能模块大体上分为三个部分:
    1.界面设计组件,以所见即所得的可视化方式显示当前正在设计的界面,功能包括组件的选取和编辑两大部分,其中选取根据类型可分为单选、多选、区域选择、组件拖放、大小调整等等,组件的编辑包括组件的添加、删除、复制、剪切、粘帖、对齐、布局管理等等。除这些功能外,界面设计组件还应向属性编辑页、组件选择面板、组件选择工具栏等系统其他部分提供事件和动作接口。
    2.界面设计辅助工具,如属性、事件、布局的查看和编辑工具属性页,设计组件树的浏览、导航和选择,组件选择工具栏,以及界面设计工具的编辑操作所对应的工具栏。
    3.元数据及代码解析和生成工具。此部分虽不可见,但却是界面设计工具的难点和核心。它往往是评价一个界面设计工具优劣的重要标准。
    本人打算采取迭代模式开发这个系统,先依序开发各个子模块,然后最后将他们组合起来。每个阶段都会涉及设计->编码->重构三个元素,程序在不断演化中前进。
    首先考虑界面设计组件的开发。如前文所述,其功能可分为组件选择和编辑两方面。组件选择模块的特点是在运行时可以共享一套状态数据,比如当前选择的组件,当前拖拽的组件,当前鼠标的位置,当前选择矩形的边界等等。
    实现的思想和技术其实前文都已提到。首先要实现其可视化设计界面的组件。首先可假设当前正在设计的界面组件树已经在内存构建出来了,其根就是一个Component,在渲染时只要将界面设计的paint方法中,调用根组件的渲染方法paint就能渲染出来。其方法大致如下(在其UI类中):

    public void paint(Graphics g, JComponent c) {
        if (component != null) {

            //如果当前被设计的组件不为空,则画出该组件来
            paintDesignedComponent(g);
        }

        if ((selected_components != null) &&!selected_components.isEmpty()) {

            //如果当前选中的组件不为空,则画出他们的resizing边框来
            paintResizing(g);
        }

        if (selection_bounds != null) {

            //如果当前正在选择组件,画出选择框来
            g.setColor(SELECTION_COLOR);
            g.drawRect(selection_bounds.x + LEFT_PAD, selection_bounds.y + TOP_PAD, selection_bounds.width,
                       selection_bounds.height);
        }
    }

    private void paintResizing(Graphics g, JComponent c) {

        //当前这些选中的组件是否是可以resize的

        //带有布局管理器的容器组件内的组件不应该能resizeable

        //另外如果所选择的组件跨了几个容器,它们也不应该能resizeable
        boolean resizable = isSelectedResizable();

        for (Component comp : selected_components) {

            Rectangle bounds = getRelativeBounds(comp);

            g.setColor(SELECTION_COLOR);

            int x = bounds.x + LEFT_PAD;
            int y = bounds.y + TOP_PAD;
            int w = bounds.width;
            int h = bounds.height;

            //画出被选择组件的高亮边框

            g.drawRect(x, y, w, h);

            if (resizable) {

                //如果是resizable,要画出其拖拽点矩形

                drawResizingThumbs(g, x, y, w, h);
            }
        }
    }

    private void paintDesignedComponent(Graphics g, JComponent c) {

        //这儿和以前讲过的一样,再使用Renderer技术时,要保证渲染组件是非缓冲的
        ArrayList dbcomponents = new ArrayList();

        disableBuffer(component, dbcomponents);

        int      width  = component.getWidth();
        int      height = component.getHeight();

        //创建相对根组件的剪切窗口图形对象
        Graphics clipg  = g.create(LEFT_PAD, TOP_PAD, width, height);

        //使用跟组件渲染

        component.paint(clipg);
        clipg.dispose();

        int x = LEFT_PAD - BORDER_THICK;
        int y = TOP_PAD - BORDER_THICK;
        int w = width + 2 * BORDER_THICK;
        int h = height + 2 * BORDER_THICK;

        //画出外边框来

        areaBorder.paintBorder(component, g, x, y, w, h);
        resetBuffer(dbcomponents);
    }

    时间不多了,今天先写到这儿吧。明天再详细讲述如何给界面设计工具加上选择、键盘、编辑等功能。这儿有初步的代码下载。已经能进行组件选择、拖放、添加、删除、复制、粘贴等简单的编辑动作了。下面是个截图:

更新:

    这两天做了进一步重构,添加了一些新的功能和注释。现在的设计界面工具可以进行布局管理,添加了添加提示、添加、删除、复制、剪切、粘帖、对齐等功能,把组件选择工具条做了修改,可以添加容器类等等。下面是几个截图:

Java Swing实战界面设计教程 在本章中,我们将揭开Java Swing的神秘面纱,介绍其作为一种用于创建图形用户界面(GUI)的基础库的重要性以及它的起源。Swing不仅为开发者提供了丰富的界面元素,还允许他们构建跨平台的应用程序,因为Swing是基于Java语言的,它继承了Java“一次编写,到处运行”的特性。Swing组件是构建Java图形用户界面(GUI)的基础。在本章中,我们将深入探讨Swing组件的实用技巧和最佳实践,以便开发者能高效地构建用户友好的界面。 阅读详情

相关推荐

GuiHelper:面向Java Swing的开源GUI设计辅助工具

本文还有配套的精品资源,点击获取 简介:GuiHelper 是一个开源的Java Swing图形用户界面设计工具,旨在简化Swing应用程序的用户界面构建。通过提供拖放界面、实时预览、代码生成等特性,它帮助开发者减少编写繁琐布局代码的工作量。作为开源软件,GuiHelper 遵循特定的许可证,允许开发者免费使用和修改源代码,从而促进社区合作和创新。此工具支持跨平台使用,具有...

weixin_30632267的博客 1720

IDEA插件系列(11):JFormDesigner插件——先进的Swing GUI设计器

0. 目录 1. 插件介绍 2. 安装方式 3. 使用方法 1. 插件介绍 先进的Swing GUI设计器,对MigLayout,JGoodies FormLayout,GroupLayout(自由设计),TableLayout和GridBagLayout提供 了出色的支持,这使得创建专业外观的表单变得容易。 2. 安装方式 第一种方式是使用IDEA下载安装 第二种方式是插件...

二木成林 8万+

全面掌握Java Swing Builder与IDEA界面设计

Java Swing Builder是Oracle推出的一款图形用户界面设计工具,使得Java开发者能够以更加直观和高效的方式创建复杂的GUI应用程序。在Swing Builder的辅助下,用户可以减少编码量,通过拖放组件的方式完成界面布局,从而将更多的精力投入到业务逻辑的实现中。Swing Builder本质上是一个集成开发环境(IDE)中的插件,它支持Java Swing库和NetBeans平台。其提供的可视化组件库和布局工具极大地简化了界面开发流程,特别适合初学者快速上手Java桌面应用开发。

weixin_30820933的博客 1112

java swing UI第三方设计器JFormDesiner和FlatLaf UI

官网:https://www.formdev.com/先去IDEA的插件市场安装吧JFormDesiner是非开源,且付费的插件,可以自己去找找不付费的使用方法。在swing可视化设计UI非常高效快捷,初学者可能需要一定时间探索,熟悉一下代码生成流程。创建一个JFormDesiner UI界面下一步设计完成之后,可以把相应的类组和到自己的运行访问类,但此时相应的主题还是不会有,你需要下载相应的主题jar包导入本地。

はんみん的博客 1734

【驭风计划 算法训练营】周测4:习题11-4、8-4、12-4

给出 nn 个非负整数 x1,x2,⋯,xnx1,x2,⋯,xn,有 qq 个询问,第 jj 个询问给出一个非负整数 yjyj,求其中,xor 表示按位异或运算。

Mege1的博客 1043

三维模型转变为点云模型的好工具——CloudCompare使用小记

普通三维模型能够直观地展示物体的三维全貌,但是在一些场合需要将三维模型变为相应的点云模型进行展示,而使用激光雷达等传感器采集到的点云信息往往只能反应模型表面的情况,或是使用PCL库中的可执行文件进行转换,这两种操作较为麻烦。笔者最近就遇到了这样一个情况,找到了一个名叫CloudCompare(CC)的软件,能够支持将多种文件格式的三维模型转变为点云模型。以下将本人在使用过程中所使用到的一些操作简记下来供朋友们和将来的自己参考。 一、下载 CloudCompare是一款免费软件,其可以在CloudComp

hdlwyt的博客 2万+

Java Swing界面设计UI(全)

原文链接: http://blog.youkuaiyun.com/xietansheng/article/details/72814531 Java Swing GUI 图形界面窗口开发基础教程,本教程将系统性地详细介绍 Java Swing 开发中常用的一些组件、布局管理器等相关知识技术,并...

weixin_51201930的博客 2万+

图数据挖掘 ECC K-core core number truss number clique

K-core:什么叫k-core,给定一个正整数k(k>=0),k-core是一个G的最大子图(也就是说k-core是一个图的限制),将这个子图定义为Hk,对于Hk中的每个顶点v,他的度数都是大于等于k的。 k-core是内嵌的,如下图所示,集合{ABCD}是H3,也就是3-core的子图。而集合{ABCDE}是H2,也就是2-core的子图,集合{ABCDEGF}是H1,也就是1-core的子图,而从集合的角度来讲H3<H2<H1。 core number:什么叫kcor

weixin_45193103的博客 1686

Java程序设计——Swing UI 容器(一)

容器是用来容纳和管理一组界面元素的对象。基本组件必须被安排在某个容器中,否则就无法使用。

Mr_John 2768

棋牌App逆向工程实战:透视风险分析与反作弊加固思路

在移动应用安全领域,逆向工程是一项关键的攻防技术,它通过静态分析、动态调试与协议抓包等手段,深入还原客户端真实逻辑。这项技术的核心原理,是从已编译的安装包中提取数据流,验证服务端下发的信息是否超出了客户端应有的可见范围。从技术价值看,安全测试人员可以借此定位协议层、内存层与缓存层的潜在风险,为反作弊体系提供精准的加固建议。在棋牌类App等实时对局场景中,逆向工程常被用于排查牌局信息泄露类隐患,而合规授权与测试环境是开展此类研究的必要前提。本文结合一次棋牌App的安全评估实践,梳理了从环境准备到数据流还原的完

weixin_29326909的博客 176

5分钟搞定!用L型匹配电路优化窄带天线性能(附Smith圆图实操)

本文针对窄带天线阻抗匹配难题,提供了一套5分钟快速解决方案。通过详解L型匹配电路的核心原理,并结合Smith圆图这一射频工程师的“瑞士军刀”,手把手指导如何选择拓扑、计算元件值并进行实际调试,旨在帮助硬件工程师高效优化天线性能,实现最大功率传输。

yyy34的博客 444

卡屏java,Swing UI Frame被發現卡住並在java中顯示灰色屏幕

I am having problem like in some time when i run my application it shows grey screen instead showing proper UI and application keep on throws below exception. could you please any one give me the solu...

weixin_33321522的博客 456

2、机器人控制技术:阻抗/导纳控制与强化学习的融合

本文探讨了阻抗/导纳控制与强化学习在机器人控制中的融合应用。阻抗/导纳控制广泛应用于外骨骼和跟踪控制,通过改进方案提升建模误差下的鲁棒性;强化学习则为解决维度灾难、实现最优交互提供了有效途径,尤其在大输入空间、连续时间系统、冗余机器人及鲁棒控制中表现突出。结合近似器与合理奖励设计,强化学习可在无模型情况下实现高效控制。未来,两者融合有望推动更智能、更安全的机器人系统发展。

ice55的博客 300

JAVA——界面设计Swing教程

前沿 JAVA的swing可以在不同平台运行,因为其源代码纯JAVA,只是运行效率也没那么高。AWT是另一种Sun公司开发的,但是这个包由于调用的是系统图形库,所以不能实现在不同设备的UI相同,所以swing轻量级的UI应运而生。 用户界面设计可以用MVC模型表示 MODEL :数据,...

Asber的博客 1万+

WPF vs Avalonia: 跨入C#桌面应用现代化的大门

请注意,这只是一个目录,详细内容将根据这个结构逐步展开。如果您需要某个特定部分的详细内容,请告知我,我将为您提供深入的解析和示例代码。WPF,全称Windows Presentation Foundation,是微软为Windows平台量身打造的UI框架。自2006年发布以来,它就像一位经验丰富的老船长,引领着桌面应用的航船在技术的海洋中乘风破浪。Avalonia,一个新兴的跨平台UI框架,它像一位年轻的探险家,勇敢地探索着桌面应用的新世界。

java专栏 2399

R语言使用party包中的ctree函数构建条件推理决策树(Conditional inference trees)、使用plot函数可视化训练好的条件推理决策树、条件推理决策树的叶子节点的阴影区域表

R语言使用party包中的ctree函数构建条件推理决策树(Conditional inference trees)、使用plot函数可视化训练好的条件推理决策树、条件推理决策树的叶子节点的阴影区域表示的是阳性样本的比例

data+scenario+science+insight 1226

简单Swing界面设计

接着之前学过的构造方法、类的继承等,这节课学习了程序界面的设计,首先要明确一个概念:包,他的作用是给代码进行分类,一般来说,只有同一个包内的类才能互相使用;而如果要使用不同包下的类,需要1.完整写出包名、类名 2.在类的定义前,添加import声明,格式是 { import 包名.类名 } 1.在java界面设计中有哪些相关类呢? 按照时间分类: awt:java.awt包,是java早期采用的...

Chester Cheung的博客 2097

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Swing界面设计工具

对于未知技术的原理,我总喜欢自己想像它是如何实现的。我上学时互联网搜索技术还没有怎么流行。大家学习新技术的方法,总是第一去查教科书,第二去找论文,第三去问师兄。而我想知道的技术往往都是教科书上找不到,论文中很少提及的,师兄们很少去想的事情。于是很多时候就自己想像它们是如何实现的。     图形界面设计技术对我来说就是这样。我很早以前就对这种技术很感兴趣,但是能够查找到的资源很少。我常常自己冥想图

javalife0的博客 2029

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

java swing界面设计_swing界面设计

Don’t Change Colors!不要随便改变颜色● Do not add colors to the desktop不要随便给界面增加颜色● Do not add colors to the Swing L&F不要随便给Swing的感官和皮肤增加颜色● Avoid heavily saturated colors尽量避免使用深颜色Don’t Change Fonts!不要随便改变字...

weixin_33662430的博客 604

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

java swing界面设计

每个区域最多只能包含一个组件优点:比较常用的布局,简单易掌握,放大缩小,不影响组件的位置。优点:组件整齐排列,绝对布局:布局的特点,需要指定每个组件的大小,和具体位置。优点:充分的自定义,充分的自由,可以写出漂亮的 ,细致的界面。常用的布局有绝对布局, 边界布局BorderLayout,流布局FlowLayout,表格布局GridLayout。JFrame等重量级组件,默认布局是边界布局,JPanel轻量级组件,默认布局是流布局。比如边界布局的窗口的中间,加入按表格布局的组件,表格布局里面是流式布局。...

qq_62230547的博客 6575

实验十二:SWING界面设计

实验十二:SWING界面设计 源代码 packagejiemian; importjava.awt.FlowLayout; importjavax.swing.*; importjava.awt.Container; publicclassshaoextendsJFrame{ publicshao() { JFrame...

weixin_30915951的博客 149

java swing界面设计_java swing界面设计

展开全部GUI图形界面设计的重点是布局SWING也是采用AWT的布局方式,进行布局管理的。(实现LayoutManager接口的方62616964757a686964616fe58685e5aeb931333337626232法,来进行管理布局,API中已有实现类,我们通常只需要指定实现类,而不需要自己重写方法)常用的布局有绝对布局, 边界布局BorderLayout,流布局FlowLayout,...

weixin_35599418的博客 2661

Swing界面设计工具的基本思想和技术

<br /><br />对于未知技术的原理,我总喜欢自己想像它是如何实现的。我上学时互联网搜索技术还没有怎么流行。大家学习新技术的方法,总是第一去查教科书,第二去找论文,第三去问师兄。而我想知道的技术往往都是教科书上找不到,论文中很少提及的,师兄们很少去想的事情。于是很多时候就自己想像它们是如何实现的。<br />        图形界面设计技术对我来说就是这样。我很早以前就对这种技术很感兴趣,但是能够查找到的资源很少。我常常自己冥想图形设计界面是如何画出来的;描述界面的元数据和代码是如何解析和映射的;界面

jokeHello的专栏 1627

java怎么设计好看的界面,javaswing酷炫界面 java swing界面设计

java swing怎样开发出漂亮的界面Swing 支持切换界面风格啊 默认的是Metal风格,确实不好看 你可以切换为Windows风格,看起来和Windows上的程序就是一样滴了,还可以切换为苹果的风格,很Beauty滴说. 如果你用的是jdk6,甚至可以自己定义自己想要的风格. 一句话,用Swing做界面,只白驹过隙,简单的四个字,却是最令人惆怅的一个词语。JTabbedPane 小编自己写...

weixin_31762925的博客 5754
上一篇: SWT已经是日薄西山了
下一篇: Swing与SWT的比较
great-sage
博客等级 码龄20年 122粉丝 120原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值