精华内容
下载资源
问答
  • 愤怒!竟然还有学校还在教 JavaSwing

    万次阅读 多人点赞 2021-05-24 08:34:36
    昨天,有个读者私信我说,“老师正在教 Swing,这个...但我内心其实是非常愤怒的,都什么时候了,Java 中的 Swing 早被淘汰了,哪个项目还会用这玩意编写客户端界面呢! 学 Swing、AWT 这些图形化组件纯属浪费时间! 可

    昨天,有个读者私信我说,“老师正在教 Swing,这个知识点还需要学习吗?”

    说句实在话,刚看到这个问题的时候,我是想骂娘的!不是骂读者啊,你懂得,骂学校,骂老师。但我硬是掐着自己的大腿忍住了,很客气地回复了一句“对,甚至可以不学”。

    有点点到为止的味道。

    我之所以这么委婉,是希望读者不要对学校的老师心存偏见,影响了后面的学习进度。但我内心其实是非常愤怒的,都什么时候了,Java 中的 Swing 早被淘汰了,哪个项目还会用这玩意编写客户端界面呢!

    学 Swing、AWT 这些图形化组件纯属浪费时间!

    可能有些老师也没真正在公司里实战过,拿本书就上来教,导致学生把大量的时间浪费在不需要学习的知识点上,以至于毕业找工作的时候,能力达不到招聘的要求。

    有些学校很装逼的,老师都是拿自己的书来讲课的,反正我大学那会就是,觉得老师挺牛逼的呀,都自己出书了!后来等我自己出书了,才发现,原来出书也没什么难的呀(嗯,我在装逼)!

    有些学校还不错,会选一些计算机专业的经典著作,比如说各种黑皮书作为教材。我只能说,能在这样的学校里待着的同学都是幸运的。

    怕就怕,有些老师把教材直接拿过来不做过滤。不管是《Java 编程思想》还是《Java 核心技术卷 1》,里面都有大量的篇幅介绍 Swing、AWT 这些,但有工作经验的人都知道,这些在工作中是完全不用的东西。

    我在推荐这两本书的时候,都会明确指出,不要去学这些东西,直接跳过,甚至可以直接撕掉。

    希望出版社的编辑朋友们再版这些书的时候,能把这些不用的东西剔除掉,以免影响了初学 Java 的读者。当然了,我知道,这很难做到,删了等于书就变薄了,计算机专业领域的书都一本比一本厚,一本比一本贵!删了估计就卖不到这个价了,血亏。

    那对于初学者来说,该怎么办呢?

    当然是多关注一下真正有实力的编程大佬们,比如说我的好朋友 JavaGuide、江南一点雨等等,以及二哥我(加粗、加感叹号)!!!!!!!!!!

    有问题,直接过来问,然后就知道学习的重点了!比跟着某些老师瞎学要强多了。

    这不,刚好有编程新手过来问问题,二哥特别热情,还顺带做了一次心理按摩,帮助读者缓解压力,疏通脉络。

    接下来,我来重点说说,怎么才能找到实习工作。

    二哥的读者群体里有很大一部分都是大学生,所以如果你今天看了这篇文章,并且看到了这里,OK,恭喜你,直了,不不不,值了!

    找 Java 后端的实习工作,首先要明白一点,校招不同社招,不会要求太多的项目经验,这一点,看似很浅显的道理,但往往很多学弟学妹容易在这一点上纠结,我缺项目经验啊,要狠狠地补,结果把计算机基础方面的学习给抛之脑后了,导致拣了芝麻丢了西瓜,得不偿失。

    临到毕业季,很多公司就会到学校去校招,标准其实很简单,Java 方面能做一些简单的增删改查就行,但学习能力一定要强,基础一定要扎实,方便后面培养。因为刚入职的新人,靠谱的公司都会安排师父带,还会安排一定量的培训,公司是不怕你项目经验不足的,怕的是你学习进度跟不上。

    我当年在外企实习的时候,就是,一上来,直接给两个月的时间,做个小项目,我当时被安排的是做个仿 Win7 的计算器(源码和成品还放在 CSDN 的资源库里),嗯,当时用的 Swing 做的界面,但那已经是 12 年前的事了!等过了辞退阶段,公司就安排了很多培训,培训编码规范了、开发流程了等等这些。

    差不多工作了一年半的时候,我做了小组 Leader 的时候,还给新人培训过好多次,讲 Flex 是怎么用的。嗯,这玩意也被淘汰了!

    (时不时就透露出我是一名 old 码农的浓烈气息)

    好了,不废话了。来说下 Java 后端实习生的最基本的要求。

    第一,经常用的工具一定要熟练

    比如说 Intellij IDEA 一定要能熟练地使用。如果你想写出质量杠杠的 Java 代码,又想追求开发效率,用 Intellij IDEA 准没错!可以去 GitHub 上看一下 Intellij IDEA 中文版的教程,快捷键设置了、代码模板了、常用插件了,这些都有详细地说明。

    https://github.com/judasn/IntelliJ-IDEA-Tutorial

    我举个简单的例子,像 **CheckStyle、Alibaba Java 代码规范、SonarLint 这三个插件是一定要装的,可以极大程度上保证代码质量。**除了这 3 个,还有呢:

    这些都能在很大程度上提高编写代码的效率。

    比如说 Git 一定要能熟练的使用。大家都知道,版本控制系统非常重要!!!!!!

    即便你只是一个人在编码,它也可以帮助你创建项目的快照、记录每个改动、创建不同的分支等等。如果你参与的是多人协作,它更是一个无价之宝,你不仅可以看到别人对代码的修改,还可以同时解决由于并行开发带来的冲突。版本控制系统有很多,其中最突出的代表就是 Git。

    想要把 Git 学好的话,可以看一下 Pro Git 中文版 PDF,可以说是学习 Git 的最佳教程,因为作者就是 Git 的一个主要实现的贡献者。

    第二,Java 基础一定要扎实

    像 Java 的数据类型、Java 的运算符、Java 的流程控制、Java 的面向对象、Java 的异常处理,这些都是最基础的东西,是初学 Java 的时候必须掌握的知识点。

    然后是 Java 集合框架、Java IO、Java 网络编程、Java 多线程并发、Java 虚拟机,这些是 Java 中比较核心的知识点,也是必须要掌握的。

    大家可以先看看我整理的这份 GitHub 上星标 115k+ 的 Java 教程,里面涵盖了 Java 所有的知识点,包括 Java 语法、Java 集合框架、Java IO、Java 并发编程和 Java 虚拟机,内容不多,只讲重点

    GitHub 星标 115k+的 Java 教程,超级硬核!

    Java 集合框架中,像 ArrayList 与 LinkedList 之间的差别,HashMap 的数据结构、工作原理、哈希冲突、扩容过程、拉链法导致链表过深时为什么不用二叉查找树而选择红黑树、Java 8 时 HashMap 发生了什么变化、HashMap & ConcurrentHashMap 的区别等等,是面试的时候考察的重点。

    多线程并发算是 Java 基础当中的难点之一,需要掌握的知识点我用思维导图列一下。

    还有 Java 虚拟机,要学的知识点有:Java 虚拟机内存结构、垃圾收集策略与算法、内存分配与回收策略、Java 虚拟机性能调优、类文件结构、类加载机制等等。

    怎么学呢?推荐大家一本书,就一本书,周志明老师的《深入理解 Java 虚拟机》,一开始啃起来可能会比较痛苦,但我必须得负责任的告诉你,多啃一啃,面试的时候很容易就把面试官给惊艳了。

    第三,掌握 MySQL 数据库。

    先来看一下 MySQL 的知识体系,还是用思维导图的形式。

    对于基本的 SQL 语句,推荐《SQL 必知必会》这本书,很薄,很快就能学完了。然后是《MySQL 必知必会》,讲的很全,但很简练,非常适合零基础的学弟学妹。如果想更深入的学习 MySQL 的话,推荐两本书,《高性能 MySQL》和《MySQL 技术内幕:InnoDB 存储引擎》。

    如果英语功底比较扎实的话,推荐看 MySQL Tutorial 这个英文网站教程,遇到阻碍的话,可以借助一下谷歌翻译。

    https://www.mysqltutorial.org/

    如果你有一台自己的服务器(学生购买的话也比较便宜)的话,可以到阿里云大学上学习,里面有 18 门免费课程,从 SQL 到 NoSQL,从自建到云上数据库,一站式学习+自测。

    第四,掌握 Spring 系列框架

    想成为一名合格的 Java 后端开发工程师,Spring 的系列框架是必须得掌握的,yyds。从 SSM(Spring+Spring MVC+MyBatis)到 Spring Boot,再到 Spring Cloud,都得会用。

    事实上,Spring 早已成为 Java 后端开发的行业标准,如何用好 Spring,是 Java 程序员的必修课之一。由于 Spring 的快速发展,它逐渐从一个轻量级的开发框架变成了一个“庞然大物”,越来越笨重,导致搭建一个应用程序的成本越来越高,于是 Spring Boot 就应运而生了,它能帮助开发者快速搭建出一个独立应用,只需要很少的配置就可以了。可以毫不夸张的说,Spring Boot,牛逼!

    Spring Cloud 利用 Spring Boot 的开发便利性,巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,可以说,Spring Cloud 的诞生,又一次解放了Java 程序员的生产力。

    关于 SSM 的学习,可以看下江南一点雨在 B 站上的视频,能为后面学习 Spring Boot 打下坚实的基础。

    https://www.bilibili.com/video/BV1NX4y1G7wx

    我来简单介绍一下 SSM 具体是什么。

    1)Spring 是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。它可以装载 Bean,也就是 Java 中的类,包括 Service、Dao 里面的;利用控制反转这个机制,我们就不用在每次使用类的时候用 new 关键字声明并初始化。另外,Spring 事务管理也是开发中常用到的。

    2)来看一下 SpringMVC 的工作原理:

    • 客户端发送请求到 DispacherServlet(分发器)
    • 由 DispacherServlet 控制器查询 HanderMapping,找到处理请求的 Controller
    • Controller 调用业务逻辑处理后,返回 ModelAndView
    • DispacherSerclet 查询视图解析器,找到 ModelAndView 指定的视图
    • 视图负责将结果显示到客户端

    3)MyBatis 是一个支持普通 SQL 查询,存储过程和高级映射的持久层框架。它对 JDBC 做了封装,让数据库底层操作变的更透明了。 MyBatis 的操作都是围绕着一个叫 sqlSessionFactory 的实例展开的,通过配置文件关联到各个实体类的 Mapper 文件,再由 Mapper 文件映射每个类对数据库所需要执行的 SQL 语句。

    关于 Spring Boot、Spring Cloud 的学习,可以看纯洁的微笑的博客,访问量在千万级别以上,影响了无数的初学者,我也是被影响者之一。

    至于说 Redis、Dubbo 等等等等,我就不再强调了,就上面的这 4 个最基本的要求,就够喝一壶了。还有像算法与数据结构、操作系统、编译原理、计算机网络、计算机组成原理等等这些通用层面的,我也不再一一强调了。大学阶段,有时间就搞这些,如果学校已经安排了这些课程,那就更好了,学,一定要学!

    大学时光说短不短,说长不长,作为过来人,真的是感觉一眨眼就过去了;对于正在读大学的学弟学妹们来说,正是青春的好时光,有很多事情要做,忙着社交,忙着拓展,忙着锻炼,忙着课业,忙着恋爱,忙不得开交。怎么在这么多事情的夹缝中努力学习呢?

    就是一定要学会做减法,不该学的内容就不要再花时间学习了。像前面提到的 Swing、AWT 这些东西早已经被淘汰了,还有像 Applet、JSP 这种的,如果大学还在教这些,真的是学生的不幸。

    与其把时间花费到这些没用的知识点上,真不如:

    1)痴迷于数据结构与算法

    算法题就好像科举考试时代背的八股文,是知识改变命运的代表作。你不刷,就很过算法题这一关,因为不仅要考,还能提高你的编程功底。我一直给大家推荐的 Java 版的 LeetCode 刷题笔记,一定要下载下来刷一刷(可以点击下面的链接去下载)。

    吃完 300 道 LeetCode 题后,我胖得快炸了!

    2)热衷于 ACM

    3)尝试 Unix、Linux 环境下编程

    4)醉心于网络编程和多线程编程,对 TCP/IP、HTTP 等网络协议有很深的理解

    好了,今天的分享就到这吧。

    我是二哥呀,希望能给学弟学妹们一些帮助和启发,记得点赞哟~

    展开全文
  • Java Swing 图形界面开发(目录)

    万次阅读 多人点赞 2017-05-30 23:50:42
    Java Swing 图形界面(GUI)开发基础教程(目录)

    本文链接: https://blog.csdn.net/xietansheng/article/details/72814492

    0. JavaSwing 简介

    1. JavaSwing 布局管理器

    2. JavaSwing 基本组件

    3. JavaSwing 面板组件

    4. JavaSwing 其他组件

    5. JavaSwing 相关特性

    扩展:Java AWT/Swing 其他相关


    展开全文
  • Java_Swing

    2018-06-21 09:04:00
    Java_Swing知识大纲.txt Java_Swing知识大纲.txt Java_Swing知识大纲.txt
  • Java Swing 图形界面开发简介

    万次阅读 多人点赞 2017-05-30 23:52:47
    Java Swing GUI 图形界面窗口开发基础教程,本教程将系统性地详细介绍 Swing 开发中常用的一些组件、布局管理器等相关知识技术,并且每章节都将通过代码实例展示实际应用。SwingJava 为图形界面应用开发提供的...

    本文链接: http://blog.csdn.net/xietansheng/article/details/72814531

    Java Swing GUI 图形界面窗口开发基础教程,本教程将系统性地详细介绍 Java Swing 开发中常用的一些组件、布局管理器等相关知识技术,并且每章节都将通过代码实例展示实际应用。

    教程总目录: Java Swing 图形界面开发(目录)

    1. Swing简介

    Swing 是 Java 为图形界面应用开发提供的一组工具包,是 Java 基础类的一部分。

    Swing 包含了构建图形界面(GUI)的各种组件,如: 窗口、标签、按钮、文本框等。

    Swing 提供了许多比 AWT 更好的屏幕显示元素,使用纯 Java 实现,能够更好的兼容跨平台运行。

    为了和 AWT 组件区分,Swing 组件在javax.swing.*包下,类名均以 J 开头,例如: JFrame、JLabel、JButton等。

    2. Swing组件

    一个 Java 的图形界面,由各种不同类型的“元素”组成,例如: 窗口、菜单栏、对话框、标签、按钮、文本框等等,这些“元素”统一被称为 组件Component)。

    组件按照不同的功能,可分为 顶层容器中间容器基本组件。一个简单窗口的组成,如下层级结构所示:

    • 顶层容器
      • 菜单栏
      • 中间容器
        • 基本组件
        • 基本组件

    组件类型的继承关系:

    • 顶层容器 属于窗口类组件,继承自java.awt.Window
    • 中间容器 和 基本组件 继承自javax.swing.JComponent

    2.1 顶层容器

    顶层容器属于窗口类组件,可以独立显示,一个图形界面至少需要一个窗口,例如:

    #组件描述
    1JFrame一个普通的窗口(绝大多数 Swing 图形界面程序使用 JFrame 作为顶层容器)
    2JDialog对话框

    2.2 中间容器

    中间容器充当基本组件的载体,不可独立显示。中间容器可以添加若干基本组件(也可以嵌套添加中间容器),对容器内的组件进行管理,类似于给各种复杂的组件进行分组管理。最顶层的一个中间容器必须依托在顶层容器(窗口)内。

    常用的中间容器(面板):

    #组件描述
    1JPanel一般轻量级面板容器组件
    2JScrollPane带滚动条的,可以水平和垂直滚动的面板组件
    3JSplitPane分隔面板
    4JTabbedPane选项卡面板
    5JLayeredPane层级面板

    特殊的中间容器:

    #组件描述
    1JMenuBar菜单栏
    2JToolBar工具栏
    3JPopupMenu弹出菜单
    4JInternalFrame内部窗口

    2.3 基本组件

    基本组件是直接实现人机交互的组件。

    常用的简单的基本组件:

    #组件描述
    1JLabel标签
    2JButton按钮
    3JRadioButton单选按钮
    4JCheckBox复选框
    5JToggleButton开关按钮
    6JTextField文本框
    7JPasswordField密码框
    8JTextArea文本区域
    9JComboBox下拉列表框
    10JList列表
    11JProgressBar进度条
    12JSlider滑块

    选取器组件:

    #组件描述
    1JFileChooser文件选取器
    2JColorChooser颜色选取器

    其他较为复杂的基本组件:

    #组件描述
    1JTable表格
    2JTree

    3. 布局管理器

    Swing 的各种组件(JComponent)添加到面板容器中(JPanel),需要给面板容器指定布局管理器(LayoutManager),明确容器(Container)内的各个组件之间的排列布局方式。

    常用的布局管理器:

    #布局管理器描述
    1FlowLayout流式布局,按组件加入的顺序,按水平方向排列,排满一行换下一行继续排列。
    2GridLayout网格布局,把Container按指定行列数分隔出若干网格,每一个网格按顺序放置一个控件。
    3GridBagLayout网格袋布局,按网格划分Container,每个组件可占用一个或多个网格,可将组件垂直、水平或沿它们的基线对齐。
    4BoxLayout箱式布局,将Container中的多个组件按 水平 或 垂直 的方式排列。
    5GroupLayout分组布局,将组件按层次分组(串行 或 并行),分别确定 组件组 在 水平 和 垂直 方向上的位置。
    6CardLayout卡片布局,将Container中的每个组件看作一张卡片,一次只能显示一张卡片,默认显示第一张卡片。
    7BorderLayout边界布局,把Container按方位分为 5 个区域(东、西、南、北、中),每个区域放置一个组件。
    8SpringLayout弹性布局,通过定义组件四条边的坐标位置来实现布局。
    9null绝对布局,通过设置组件在Container中的坐标位置来放置组件。

    4. 代码实例: 一个简单的窗口程序

    package com.xiets.swing;
    
    import javax.swing.*;
    
    public class Main {
    
        public static void main(String[] args) {
            // 1. 创建一个顶层容器(窗口)
            JFrame jf = new JFrame("测试窗口");          // 创建窗口
            jf.setSize(250, 250);                       // 设置窗口大小
            jf.setLocationRelativeTo(null);             // 把窗口位置设置到屏幕中心
            jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); // 当点击窗口的关闭按钮时退出程序(没有这一句,程序不会退出)
    
            // 2. 创建中间容器(面板容器)
            JPanel panel = new JPanel();                // 创建面板容器,使用默认的布局管理器
    
            // 3. 创建一个基本组件(按钮),并添加到 面板容器 中
            JButton btn = new JButton("测试按钮");
            panel.add(btn);
    
            // 4. 把 面板容器 作为窗口的内容面板 设置到 窗口
            jf.setContentPane(panel);
    
            // 5. 显示窗口,前面创建的信息都在内存中,通过 jf.setVisible(true) 把内存中的窗口显示在屏幕上。
            jf.setVisible(true);
        }
    
    }
    

    结果展示:

    result.png


    展开全文
  • 介绍了Swing提供的各种窗口组件,使读者了解到JAVA除了具有强大的网络处理能力外,也具备了强大的窗口展示效果,让您可以很轻松地做出想要展示的组件,如菜单、表格、树状图等等。良好的系统功能若能配上良好的操作...
  • Java高级swing编程,怎样去掉jframe外边框。Java高级swing编程,
  • java swing漂亮界面 超酷 javaswing教程
  • TML Java Swing示例 基于Java Swing的应用程序的TML示例。 安装 ... 或者,您可以在Eclipse中打开项目并从那里运行com.translationexchange.samples.swing.Application。 链接 在TranslationExchange.c
  • 下载可用,文件主要是用于java练习运行java程序,下载或者上载文件时,选择下载到的文件夹 和 需要上载的文件。不建议作用于web端,因为自己没试过,理论相同。可以试一下。
  • java+swing漂亮软件界面 javaswing教程
  • java精通swing程序设计

    2011-08-29 16:54:32
    java精通swing程序设计 java精通swing程序设计 java精通swing程序设计 java精通swing程序设计 java精通swing程序设计
  • java swing漂亮软件界面 超酷 以及java swing教程,大神必备神器,导入即用,无需更改,无需配置,java必经之路!
  • java swing

    2018-04-20 17:10:45
    java swing 增删改查 ,多词查询,下载即运行,文件包括java 源码和数据库文件,打开文件,运行顺序是:login.java---run as --java application . 也可以打压成jar 包运行
  • java漂亮swing界面

    2012-11-05 16:34:21
    java漂亮swing界面
  • import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import com.mysql.jdbc.Statement; public class ...

    一、概述

    为了管理好商店库存信息,提升店铺管理工作效率,结合实际工作需要,设计和开发本系统,主要用于商店商品信息维护出入库等。包含商品库存信息查看、商品信息修改,新增商品信息,删除信息等功能。

    二、功能清单

    1、查询如图

    查询界面,请从数据库查询学生信息表数据并显示在控件上,通过底部功能菜单执行相应功能,添加、修改按钮点击后课弹出相应窗体执行相应操作,点击刷新按钮课刷新当前数据,删除按钮点击后可删除选中行数据并刷新

    2、添加,如图

    填写姓名和班级后,点击添加按钮后可添加数据

    3、修改,如图

    通过点击查询界面中“修改按钮”,可在修改界面修改当前选中行数据

    三、数据库

    注意:数据库名称为“班级_姓名”,如“1705_小白”。

    表名称:tGoods

    字段

    字段名

    数据类型

    描述

    约束

    goodsID

    int

    商品编号

    主键自增长

    name

    varchar(20)

    商品名称

    typeName

    varchar(20)

    类别名称

    stock

    Int

    库存

    评分规则(共100分)

    标题

    分值

    合理注释

    10分

    命名规范

    10分

    查询

    20分

    修改

    10分

    删除

    10分

    添加

    10分

    数据库创建

    10分

    数据库连接

    10分

    整体效果

    10分

    实现代码:

    数据库 链接: https://pan-yz.chaoxing.com/external/m/file/483246110958415872

    Java文件 链接: https://pan-yz.chaoxing.com/external/m/file/483246085097291776

    数据库:

    -- ----------------------------
    -- Table structure for tgoods
    -- ----------------------------
    DROP TABLE IF EXISTS `tgoods`;
    CREATE TABLE `tgoods` (
      `goodsID` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(20) DEFAULT NULL,
      `typeName` varchar(20) DEFAULT NULL,
      `stock` int(11) DEFAULT NULL,
      PRIMARY KEY (`goodsID`)
    ) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
    
    -- ----------------------------
    -- Records of tgoods
    -- ----------------------------
    INSERT INTO `tgoods` VALUES ('9', '统一冰红茶', '饮料', '24');
    INSERT INTO `tgoods` VALUES ('10', '娃哈哈营养快线', '饮料', '23');

    com.test.db >>> DbConnection

    package com.test.db;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    import com.mysql.jdbc.Statement;
    
    public class DbConnection {
    	//驱动类的类名
    	private static final String DRIVERNAME="com.mysql.jdbc.Driver";
    	//连接数据的URL路径
    	private static final String URL="jdbc:mysql://localhost:3306/1902_杨明金";
    	//数据库登录账号
    	private static final String USER="root";
    	//数据库登录密码
    	private static final String PASSWORD="root123";
    	//加载驱动
    	static{
    		try {
    			Class.forName(DRIVERNAME);
    		} catch (ClassNotFoundException e) {
    			e.printStackTrace();
    		}
    	}
        //获取数据库连接
    	public static Connection getConnection() {
    	          try {
    		return DriverManager.getConnection(URL,USER,PASSWORD);
    	           } catch (SQLException e) {	
    		e.printStackTrace();
    	           }
    			return null;
    	}
    	//查询
    	public static ResultSet query(String sql) {
    		System.out.println(sql);
    		//获取连接
    		Connection connection=getConnection();
    		PreparedStatement psd;
    		try {
    			psd = connection.prepareStatement(sql);
    			return psd.executeQuery();
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    		return null;
    	}
    	//增、删、改、查
    		public static int updataInfo(String sql) {
    			System.out.println(sql);
    			//获取连接
    			Connection connection=getConnection();
    			try {
    				PreparedStatement psd=connection.prepareStatement(sql);
    				return psd.executeUpdate();
    			} catch (SQLException e) {
    				e.printStackTrace();
    			}
    			return 0;
    		}
    	//关闭连接
    	public  static  void colse(ResultSet rs,Statement stmt,Connection  conn) throws Exception{
    	          try { if (rs != null){ rs.close(); }
                             	 if (stmt != null) { stmt.cancel(); }
    		 if (conn != null) { conn.close(); }
    	   } catch (Exception e) {
    		   e.printStackTrace(); throw new Exception();
    	   }
    	}
    }	

    com.test.entity >>> Goods

    package com.test.entity;
    
    public class Goods {
    	private int goodsID;//商品ID
    	private String name;//商品名称
    	private String typeName;//商品类别
    	private int stock;//库存
    
    	public Goods(int goodsID, String name, String typeName, int stock) {
    		super();
    		this.goodsID = goodsID;
    		this.name = name;
    		this.typeName = typeName;
    		this.stock = stock;
    	}
    
    	public Goods() {
    		super();
    	}
    
    	public int getGoodsID() {
    		return goodsID;
    	}
    
    	public void setGoodsID(int goodsID) {
    		this.goodsID = goodsID;
    	}
    
    	public String getName() {
    		return name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    
    	public String getTypeName() {
    		return typeName;
    	}
    
    	public void setTypeName(String typeName) {
    		this.typeName = typeName;
    	}
    
    	public int getStock() {
    		return stock;
    	}
    
    	public void setStock(int stock) {
    		this.stock = stock;
    	}
    	
    }
    

    com.test.controller >>> Updata

    package com.test.controller;
    
    import com.test.db.DbConnection;
    
    public class Updata {
    	//添加数据
    	public static int addData(String sql) {
    		
    		return DbConnection.updataInfo(sql);
    	}
    }
    

    com.test.controller >>> Select

    package com.test.controller;
    
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;
    
    import com.test.db.DbConnection;
    import com.test.entity.Goods;
    
    public class Select {
    	public static Object[][] getGoods() {
    		String sql = "SELECT * FROM tgoods";
    		
    		ResultSet resultSet = DbConnection.query(sql);
    		ArrayList<Goods> list=new ArrayList<Goods>();
    		try {
    			while (resultSet.next()) {
    				Goods goods=new Goods();
    				goods.setGoodsID(resultSet.getInt(1));
    				goods.setName(resultSet.getString(2));
    				goods.setTypeName(resultSet.getString(3));
    				goods.setStock(resultSet.getInt(4));
    				list.add(goods);
    			}
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    		Object[][] objects=new Object[list.size()][4];
    		for(int i=0;i<list.size();i++) {
    			objects[i][0]=list.get(i).getGoodsID();
    			objects[i][1]=list.get(i).getName();
    			objects[i][2]=list.get(i).getTypeName();
    			objects[i][3]=list.get(i).getStock();
    		}
    		return objects;
    	}
    	
    }
    

    com.test.View >>> IndexGUI

    package com.test.view;
    
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JOptionPane;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.table.DefaultTableModel;
    
    import com.test.controller.Select;
    import com.test.controller.Updata;
    import com.test.entity.Goods;
    
    public class IndexGUI extends JFrame {
    	
    	Object[] columnNames = {"商品编号","名称","类别名称","库存"};
    	Object[][] data = Select.getGoods();
    	DefaultTableModel df = new DefaultTableModel(data, columnNames);
    	
    	public IndexGUI() {
    		super("商品信息管理");
    		this.setBounds(0, 0, 780, 500);
    		this.setLocationRelativeTo(null);//让窗口在屏幕中间显示
    		this.setResizable(false);//让窗口大小不可改变
    		this.setLayout(null);
    		
    		JTable jTable=new JTable(df);
    		JScrollPane jp = new JScrollPane(jTable);
    		jp.setBounds(0, 10, 780, 350);
    		this.add(jp);
    		
    		JButton tj = new JButton("添加");
    		tj.setBounds(50, 400, 100, 30);
    		tj.addActionListener(new ActionListener() {
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				IncreaseGUL i = new IncreaseGUL();
    				i.setVisible(true);
    			}
    		});
    		
    		JButton sc = new JButton("删除");
    		sc.setBounds(180, 400, 100, 30);
    		sc.addActionListener(new ActionListener() {
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				if (jTable.getSelectedColumn()<0) {
    					JOptionPane.showMessageDialog(null, "请选中要删除的数据!");
    				} else {
    					int goodsID = Integer.parseInt(jTable.getValueAt(jTable.getSelectedRow(), 0).toString());
    					String sql="delete from tgoods where goodsid="+goodsID;
    					Updata updata = new Updata();
    					int result = updata.addData(sql);
    					if (result>0) {
    						JOptionPane.showMessageDialog(null, "删除成功!");
    						JOptionPane.showMessageDialog(null, "记得刷新一下哦!");
    					} else {
    						JOptionPane.showMessageDialog(null, "删除失败!");
    					}
    				}
    			}
    		});
    		
    		JButton xg = new JButton("修改");
    		xg.setBounds(310, 400, 100, 30);
    		xg.addActionListener(new ActionListener() {
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				if (jTable.getSelectedColumn()<0) {
    					JOptionPane.showMessageDialog(null, "请选择要修改的数据!");
    				} else {
    					int goodsID = Integer.parseInt(jTable.getValueAt(jTable.getSelectedRow(), 0).toString());
    					String name = jTable.getValueAt(jTable.getSelectedRow(), 1).toString();
    					String typeName = jTable.getValueAt(jTable.getSelectedRow(), 2).toString();
    					int stock = Integer.parseInt(jTable.getValueAt(jTable.getSelectedRow(), 3).toString());
    					Goods goods = new Goods(goodsID,name,typeName,stock);
    					ModifyGUI modifyGUI = new ModifyGUI(goods);
    					modifyGUI.setVisible(true);
    				}
    				
    			}
    		});
    		
    		JButton sx = new JButton("刷新");
    		sx.setBounds(440, 400, 100, 30);
    		sx.addActionListener(new ActionListener() {
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				Object[][] data = Select.getGoods();
    				df.setDataVector(data, columnNames);
    			}
    		});
    		
    		this.add(tj);
    		this.add(sc);
    		this.add(xg);
    		this.add(sx);
    	}
    	
    }
    

    com.test.View >>> IncreaseGUL

    package com.test.view;
    
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JTextField;
    
    import com.test.controller.Updata;
    
    public class IncreaseGUL extends JFrame implements ActionListener {
    	JTextField name = new JTextField();
    	JTextField type = new JTextField();
    	JTextField num = new JTextField();
    	public IncreaseGUL() {
    		super.setTitle("添加商品");
    		this.setBounds(0, 0, 780, 250);
    		this.setLocationRelativeTo(null);
    		this.setResizable(false);
    		this.setLayout(null);
    		
    		JLabel nameT = new JLabel("名称");
    		nameT.setBounds(50, 30, 40, 25);
    		name.setBounds(100, 30, 145, 30);
    		
    		JLabel typeT = new JLabel("类别");
    		typeT.setBounds(280, 30, 40, 25);
    		type.setBounds(335, 30, 145, 30);
    		
    		JLabel numT = new JLabel("数量");
    		numT.setBounds(515, 30, 40, 25);
    		num.setBounds(575, 30, 145, 30);
    		
    		JButton tj = new JButton("添加");
    		tj.setBounds(100, 115, 100, 30);
    		tj.addActionListener(this);
    		
    		this.add(nameT);
    		this.add(name);
    		this.add(typeT);
    		this.add(type);
    		this.add(numT);
    		this.add(num);
    		this.add(tj);
    	}
    
    	@Override
    	public void actionPerformed(ActionEvent e) {
    		String sql = null;
    		String addName = name.getText();
    		String addType = type.getText();
    		String addNum = num.getText();
    		if (addName.equals("")||addType.equals("")||addNum.equals("")) {
    			JOptionPane.showMessageDialog(null, "请完整输入要添加的数据");
    		} else {
    			sql="INSERT INTO tgoods VALUES("+"null,'"+addName+"','"+addType+"','"+addNum+"')";
    			int result = Updata.addData(sql);
    			if (result>0) {
    				JOptionPane.showMessageDialog(null, "添加成功!");
                    JOptionPane.showMessageDialog(null, "记得刷新一下哦!");
    				dispose();
    				IndexGUI i = new IndexGUI();
    			} else {
    				JOptionPane.showMessageDialog(null, "添加失败!");
    			}
    		}
    	}
    }
    

    com.test.View >>> ModifyGUI

    package com.test.view;
    
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JTextField;
    import com.test.controller.Updata;
    import com.test.entity.Goods;
    
    public class ModifyGUI extends JFrame implements ActionListener {
    	
    	JTextField name = new JTextField();
    	JTextField type = new JTextField();
    	JTextField num = new JTextField();
    	int id;
    	public ModifyGUI(Goods goods) {
    		super.setTitle("修改商品");
    		this.setBounds(0, 0, 780, 250);
    		this.setLocationRelativeTo(null);
    		this.setLayout(null);
    		
    		JLabel nameT = new JLabel("名称");
    		nameT.setBounds(50, 30, 40, 25);
    		name.setBounds(100, 30, 145, 30);
    		
    		JLabel typeT = new JLabel("类别");
    		typeT.setBounds(280, 30, 40, 25);
    		type.setBounds(335, 30, 145, 30);
    		
    		JLabel numT = new JLabel("库存");
    		numT.setBounds(515, 30, 40, 25);
    		num.setBounds(575, 30, 145, 30);
    		
    		JButton xg = new JButton("修改");
    		xg.setBounds(100, 115, 100, 30);
    		xg.addActionListener(this);
    		
    		this.add(nameT);
    		this.add(name);
    		this.add(typeT);
    		this.add(type);
    		this.add(numT);
    		this.add(num);
    		this.add(xg);
    		
    		name.setText(goods.getName());
    		type.setText(goods.getTypeName());
    		num.setText(Integer.toString(goods.getStock()));
    		id = goods.getGoodsID();
    	}
    	
    	@Override
    	public void actionPerformed(ActionEvent e) {
    		String sql = null;
    		String addName = name.getText();
    		String addType = type.getText();
    		int addNum = Integer.parseInt(num.getText());
    		if (addName.equals("")||addType.equals("")||addNum==0) {
    			JOptionPane.showMessageDialog(null, "请完整输入要修改的数据");
    		}else {
    			Updata up=new Updata();
    			
    			sql="UPDATE tgoods SET "+"name='"+addName+"',typeName='"+addType+"',stock='"+addNum+"'where goodsid="+id;
    			int result = Updata.addData(sql);
    			Updata.addData(sql);
    			if (result>0) {
    				JOptionPane.showMessageDialog(null, "修改成功!");
                    JOptionPane.showMessageDialog(null, "记得刷新一下哦!");
    				dispose();
    				IndexGUI i = new IndexGUI();
    				i.setVisible(true);
    			} else {
    				JOptionPane.showMessageDialog(null, "修改失败!");
    			}
    		}
    	}
    }
    

    com.test.Test >>> Test

    package com.test.Test;
    
    import com.test.view.IndexGUI;
    
    public class Test {
    	public static void main(String[] args) {
    		IndexGUI i = new IndexGUI();
    		i.setVisible(true);
    	}
    }
    

    展开全文
  • Swing插件,swing,java-swing swing-plugin下载
  • java swing demo

    2018-06-02 20:48:01
    java swing demo,java swing demo,java swing demo,java swing demo
  • Java Swing源文件

    2010-03-23 21:34:59
    Java Swing源文件Java Swing源文件Java Swing源文件Java Swing源文件Java Swing源文件Java Swing源文件Java Swing源文件Java Swing源文件Java Swing源文件
  • java_swing表格分页

    2012-12-12 16:37:23
    java_swing表格分页
  • java swing漂亮软件界面 超酷 以及java swing教程
  • Java_Swing(一)——Swing介绍

    万次阅读 2019-06-03 23:49:27
    Swing是一个为Java设计的GUI工具包,是新一代的图形界面工具。Swing组件的出现是为了解决AWT组件的移植性问题,同时提供更多的企业级应用程序所需要的界面功能,Swing组件中的类主要包含在javax.swing包中,JDK1.2...
  • java+swing聊天室

    2011-06-19 19:43:30
    老师亲自做的聊天室程序。java swing 聊天室。java swing 聊天室。
  • java组件swing打印测试

    2014-09-24 16:43:16
    java组件swing打印测试,供各位大侠下载应用。
  • JAVA SWING可折叠菜单

    2021-06-02 01:00:19
    JAVA SWING可折叠菜单 JAVA SWING可折叠菜单 JAVA SWING可折叠菜单 JAVA SWING可折叠菜单
  • javaswing表格树示例

    热门讨论 2013-03-27 11:12:34
    javaswing表格树示例
  • java使用swing实现内嵌浏览器

    万次阅读 多人点赞 2018-07-22 20:09:09
    java使用swing实现内嵌浏览器   1.使用swing内嵌浏览器需要导入3个jar包,第3个根据电脑版本选择 dj-native-swing-swt.jar dj-native-swing.jar org.eclipse.swt.win32.win32.x86_64-4.3.jar 下载链接:...
  • java swing图形界面开发 java.swing简介

    千次阅读 2014-11-14 21:32:43
    所以我打算在制作游戏之前,先花几天的时间大概地研究一下关于java.swing的内容。网上有不少电子书和视频教程,大家可以自行找去看。我看的书是《Java Swing图形界面开发与案列详解》。我会在看的过程中顺便进行各种...
  • Java+Swing实现医院管理系统

    千次阅读 多人点赞 2021-05-03 17:11:40
    Java+Swing实现医院管理系统一、系统介绍二、系统展示1.登录页2.主页面3.病人信息录入4.病人信息操作5.就医档案录入6.处方单录入7.就医档案操作8.医生信息录入9.医生信息操作10.科室信息录入11.科室信息操作12.收费...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 152,326
精华内容 60,930
关键字:

java怎么打开swing

java 订阅