应用Java Swing GUI界面技术实现的可演示Java JDBC数据库操作技术的应用实例
java中jtable的用法

java中jtable的用法一、JTable简介JTable是Java Swing包中的一个组件,用于在图形用户界面(GUI)中显示和编辑表格数据。
它可以显示任何类型的数据,包括文本、数字、日期和图像等。
二、创建JTable1. 创建一个空的JTable可以通过以下代码创建一个空的JTable:```JTable table = new JTable();```2. 从二维数组创建JTable可以通过以下代码从二维数组创建一个简单的JTable:String[][] data = {{"John", "Doe"}, {"Jane", "Doe"}};String[] columnNames = {"First Name", "Last Name"};JTable table = new JTable(data, columnNames);```3. 从TableModel创建JTable可以通过实现TableModel接口并使用它来创建一个定制的TableModel,然后将其传递给JTable构造函数来创建一个自定义的JTable。
4. 从数据库中获取数据并创建JTable可以通过使用Java数据库连接(JDBC)API与数据库进行交互,并将结果集转换为TableModel,然后将其传递给JTable构造函数来从数据库中获取数据并创建一个自定义的JTable。
三、设置表格属性1. 设置表头可以使用以下代码设置表头:```String[] columnNames = {"First Name", "Last Name"};table.setColumnIdentifiers(columnNames);```2. 设置表格行高和列宽可以使用以下代码设置表格行高和列宽:```table.setRowHeight(30);table.getColumnModel().getColumn(0).setPreferredWidth(100); ```3. 设置表格背景色和前景色可以使用以下代码设置表格背景色和前景色:```table.setBackground(Color.white);table.setForeground(Color.black);```4. 设置表格字体可以使用以下代码设置表格字体:```Font font = new Font("Arial", Font.PLAIN, 14);table.setFont(font);```5. 设置表格边框可以使用以下代码设置表格边框:```Border border = BorderFactory.createLineBorder(Color.black); table.setBorder(border);```四、渲染器和编辑器1. 渲染器渲染器用于将单元格中的值呈现为用户界面上的文本或图像。
Java图形用户界面:Swing和JavaFX的简单介绍

Java图形用户界面:Swing和JavaFX的简单介绍在计算机科学领域中,图形用户界面(GUI)是指通过图形、图像和视觉元素来与计算机程序进行交互的界面。
Java作为一种广泛使用的编程语言,提供了多种选择来构建图形用户界面。
其中,Swing和JavaFX是最常用的两种选择。
本文将对这两种Java GUI工具进行简单介绍,并探讨它们的特点和用途。
一、SwingSwing是Java提供的一套GUI工具包,旨在提供一种跨平台的解决方案。
它是在AWT(抽象窗口工具包)的基础上开发的,为开发者提供了一系列可重用的GUI组件,如按钮、文本框、标签等。
Swing的特点之一是其轻量级性能,它不依赖于操作系统的原生GUI组件,而是完全由Java代码实现。
这使得Swing应用程序可以在不同操作系统上以相同的方式运行,而无需进行任何修改。
Swing提供了丰富的组件库,使得开发者可以轻松构建复杂的用户界面。
它还支持可定制的外观和感觉,开发者可以根据自己的需求选择不同的外观主题。
此外,Swing还提供了一些高级组件,如表格、树形结构和滚动面板,使得开发者可以创建更复杂和功能强大的界面。
然而,Swing也有一些缺点。
由于其完全由Java代码实现的特性,Swing应用程序可能在性能方面存在一些问题。
尤其是在处理大量数据或复杂图形时,Swing的性能可能会受到影响。
此外,Swing的外观和感觉可能与操作系统的原生界面存在一些差异,这可能会对用户体验造成一定的影响。
二、JavaFXJavaFX是Java平台上的另一种GUI工具,它提供了更现代化和富有表现力的用户界面。
与Swing不同,JavaFX使用了一种基于场景图的方式来构建界面。
它通过使用FXML(一种基于XML的用户界面描述语言)和CSS(层叠样式表)来分离界面的结构和样式,使得界面的定制变得更加灵活和简单。
JavaFX提供了许多内置的UI组件,如按钮、文本框、标签等,这些组件具有更丰富的视觉效果和交互特性。
Java中的JDBC数据库操作技巧

Java中的JDBC数据库操作技巧一、JDBC简介JDBC全称为Java Database Connectivity,是Java的一个标准API,用于与各种关系型数据库进行连接、查询、更新等操作。
JDBC提供了一套基于SQL的编程接口,能够让Java程序无需了解底层数据库的细节即可进行数据库操作。
二、JDBC驱动类型JDBC驱动是一个程序模块,用于实现JDBC的API并与具体的数据库进行通信。
JDBC驱动可以分为四种类型:1、JDBC-ODBC桥接式驱动:使用ODBC驱动访问数据库。
这种驱动依赖于底层操作系统的ODBC机制,因此只能在Windows系统中使用。
2、本地式驱动:这种驱动实现了JDBC的API,并且直接与数据库交互。
由于直接调用数据库的API,因此效率要比桥接式驱动高。
3、网络式驱动:这种驱动通过网络协议与数据库进行通信。
大多数商用数据库都支持这种驱动,因此可以跨平台使用。
4、纯Java式驱动:这种驱动完全由Java实现,并且直接与数据库进行通信。
由于没有依赖于底层操作系统的机制,因此可以跨平台使用。
三、JDBC连接数据库JDBC连接数据库通常分为以下步骤:1、加载JDBC驱动在使用JDBC之前,必须先加载相应的JDBC驱动类。
可以通过Class.forName()方法来加载驱动,该方法的参数是完整的类名。
2、连接数据库连接数据库需要的参数通常包括数据库的URL、用户名和密码等。
可以使用DriverManager.getConnection()方法来建立连接,该方法的参数是一个包含数据库连接信息的字符串。
3、关闭连接在使用完连接后,必须调用Connection.close()方法来关闭连接,以便释放资源。
四、JDBC执行SQL语句JDBC可以执行各种类型的SQL语句,包括查询语句、更新语句、存储过程等。
1、执行查询语句可以使用Statement或PreparedStatement对象来执行查询语句。
跟我学Java Swing GUI组件技术及应用实例——JTabbedPane选项窗格组件及应用实例

}
/**
* 所构建的 JTabbedPane 组件内的第 1 个卡片页面板,在该卡片页面板中包含有一个按钮
*/
public class FirstTabPane extends JPanel {
JButton firstBurron=null;
public JTabbedPane(int tabPlacement, int tabLayoutPolicy) 其中 Tabplacement 可以是 JTabbedPane.TOP(表头在上面)、JTabbedPane.BOTTOM(表 头在下面)、JTabbedPane.LEFT(表头在左面)、JTabbedPane.RIGHT(表头在右面)。 而 TablayoutPolicy 可以是 JTabbedPane.WRAP_TAB_LAYOUT(表头不产生 SCROLL 效 果)、 JTabbedPane.SCROLL_TAB_LAYOUT(表头产生 SCROLL 效果)。其它形式的构造 方法的定义如下:
(2)卡片页面板的切换的事件编程 public void stateChanged(ChangeEvent e) { String currentTabbedPaneTitle = oneJTabbedPane.getTitleAt(oneJTabbedPane.getSelectedIndex()); JOptionPane.showMessageDialog(null, "你选中了:"+currentTabbedPaneTitle, "显示信息的对话框", JOptionPane.ERROR_MESSAGE); } 当用户点击 JTabbedPane 组件中的不同的卡片页面板的标题时将实现卡片页面板的切换,
javaswing实现数据显示的逻辑

javaswing实现数据显示的逻辑
要使用Java Swing来实现数据显示的逻辑,可以按照以下步骤进行:
1. 创建一个继承自JFrame的主窗口类,作为应用的主界面。
2. 在主窗口类中添加一个JTable组件,用来显示数据。
3. 创建一个继承自AbstractTableModel的数据模型类,用来管理表格中的数据。
4. 在数据模型类中实现必要的方法,如获取表格的行数、列数、单元格数值等。
5. 在主窗口类中实例化数据模型类,并将其设置给JTable组件。
6. 从数据源获取数据,并通过数据模型类的方法添加到表格中。
7. 可以添加其他的Swing组件,如按钮、文本框等,来实现数据的添加、删除、修改等操作。
8. 实现相应的事件监听器,以响应用户的操作。
例如,点击按钮时,执行相应的添加、删除、修改数据的操作。
9. 使用布局管理器来控制组件的布局。
可以选择合适的布局管理器来满足UI设计的需求。
10. 最后,调用setVisible(true)方法将主窗口显示出来。
这样,就可以使用Java Swing实现数据显示的逻辑了。
根据具体的需求和情况,可以根据以上步骤进行适当的修改和扩展。
Swing中使用JTable动态获取数据库中的数据并显示

Swing中使⽤JTable动态获取数据库中的数据并显⽰笔者注:本⽂供新⼿学习使⽤,若有⼀定基础,可以直接看3!1.创建数据库:/*Navicat MySQL Data TransferSource Server : aaSource Server Version : 50519Source Host : localhost:3306Source Database : testTarget Server Type : MYSQLTarget Server Version : 50519File Encoding : 65001Date: 2017-05-05 20:59:36*/SET FOREIGN_KEY_CHECKS=0;-- ------------------------------ Table structure for `user`-- ----------------------------DROP TABLE IF EXISTS `user`;CREATE TABLE `user` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(12) DEFAULT NULL,`password` varchar(12) DEFAULT NULL,`sex` char(4) DEFAULT NULL,`age` int(11) DEFAULT NULL,`address` varchar(12) DEFAULT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=9DEFAULT CHARSET=utf8;-- ------------------------------ Records of user-- ----------------------------INSERT INTO `user` VALUES ('1', '李雷', '123', '男', '23', '湖北⼗堰');INSERT INTO `user` VALUES ('2', '韩梅梅', '111', '⼥', '23', '湖北⼗堰');INSERT INTO `user` VALUES ('3', '光头强', '123', '男', '22', '森林');INSERT INTO `user` VALUES ('4', '熊⼤', '111', '雄', '22', '森林');INSERT INTO `user` VALUES ('5', '喜⽺⽺', '111', '雄', '16', '青青草原⽺村');INSERT INTO `user` VALUES ('6', '美⽺⽺', '123', '雌', '16', '青青草原⽺村');INSERT INTO `user` VALUES ('7', '灰太狼', '111', '雄', '18', '青青草原狼堡');INSERT INTO `user` VALUES ('8', '红太郎', '123', '雌', '18', '青青草原狼堡');2.创建项⽬:2.1按照以下格式创建项⽬2.2导⼊mysql链接数据库jar包(jar包下载地址:)2.2.1在项⽬内新建⼀个⽂件夹lib2.2.2将jar包赋值到lib⽬录下,并添加到项⽬中(反键,如图所⽰即可)注:1.DbUtils类主要写JDBC链接数据库代码,代码如下:package com.zjl.db;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class DbUtils {private static final String URL="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8"; private static final String USER="root";private static final String PASSWORD="scme";//此处为数据库密码,更改为⾃⼰数据库的密码static{try {Class.forName("com.mysql.jdbc.Driver");} catch (ClassNotFoundException e) {e.printStackTrace();}}public static Connection getConnection() throws SQLException{return DriverManager.getConnection(URL, USER, PASSWORD);}//关闭⽅法public static void close(ResultSet rs, Statement stat, Connection conn) throws SQLException{if(rs!=null){rs.close();}if(stat!=null){stat.close();}if(conn!=null){conn.close();}}}er类主要是储存数据的实体类,代码如下:package com.zjl.modle;public class User {private int id,age;private String name,password,sex,address;public int getId() {return id;}public void setId(int id) {this.id = id;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getName() {return name;}public void setName(String name) { = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}erDao主要是进⾏数据操作的类,代码如下:package com.zjl.dao;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;import com.zjl.db.DbUtils;import er;public class UserDao {private Connection conn=null;private PreparedStatement ps=null;private ResultSet rs=null;//查询所有⽤户public List<User> queryAllUser(){String sql="select * from user";List<User> list=new ArrayList<User>();try {conn=DbUtils.getConnection();ps=conn.prepareStatement(sql);rs=ps.executeQuery();System.out.println(ps.toString());while(rs.next()){User user=new User();user.setId(rs.getInt(1));user.setName(rs.getString(2));user.setPassword(rs.getString(3));user.setSex(rs.getString(4));user.setAge(rs.getInt(5));user.setAddress(rs.getString(6));list.add(user);}} catch (SQLException e) {e.printStackTrace();}return list;}}4.Main类是显⽰数据的窗体类,代码如下:package com.zjl.view;import java.awt.Color;import java.awt.Dimension;import java.awt.EventQueue;import java.awt.Toolkit;import java.util.List;import javax.swing.GroupLayout;import javax.swing.GroupLayout.Alignment;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.border.EmptyBorder;import javax.swing.border.LineBorder;import javax.swing.table.DefaultTableModel;import erDao;import er;public class Main extends JFrame {private JPanel contentPane;private JTable table;private String head[]=null;private Object [][]data=null;private UserDao user=new UserDao();/*** Launch the application.*/public static void main(String[] args) {EventQueue.invokeLater(new Runnable() {public void run() {try {Main frame = new Main();frame.setVisible(true);} catch (Exception e) {e.printStackTrace();}}});}/*** Create the frame.*/public Main() {setResizable(false);setTitle("\u673A\u7968\u9884\u8BA2\u7CFB\u7EDF");setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setBounds(100, 100, 700, 300);Dimension us=this.getSize();Dimension them=Toolkit.getDefaultToolkit().getScreenSize();int x=(them.width-us.width)/2;int y=(them.height-us.height)/2;this.setLocation(x, y);contentPane = new JPanel();contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));setContentPane(contentPane);JScrollPane scrollPane = new JScrollPane();scrollPane.setBounds(0,0,700,250);table = new JTable();table.setBorder(new LineBorder(new Color(0, 0, 0)));head=new String[] {"id", "姓名", "密码", "性别", "年龄", "住址", "\u7968\u4EF7",};DefaultTableModel tableModel=new DefaultTableModel(queryData(),head){public boolean isCellEditable(int row, int column){return false;}};table.setModel(tableModel);scrollPane.setViewportView(table);GroupLayout gl_contentPane = new GroupLayout(contentPane);gl_contentPane.setHorizontalGroup(gl_contentPane.createParallelGroup(Alignment.LEADING).addComponent(scrollPane, GroupLayout.DEFAULT_SIZE, 684, Short.MAX_VALUE));gl_contentPane.setVerticalGroup(gl_contentPane.createParallelGroup(Alignment.LEADING).addGroup(gl_contentPane.createSequentialGroup().addComponent(scrollPane, GroupLayout.PREFERRED_SIZE, 195, GroupLayout.PREFERRED_SIZE).addGap(66)));contentPane.setLayout(gl_contentPane);}//⽣成表格数据/*** @return*/public Object[][] queryData(){List<User> list=user.queryAllUser();data=new Object[list.size()][head.length];for(int i=0;i<list.size();i++){for(int j=0;j<head.length;j++){data[i][0]=list.get(i).getId();data[i][1]=list.get(i).getName();data[i][2]=list.get(i).getPassword();data[i][3]=list.get(i).getSex();data[i][4]=list.get(i).getAge();data[i][5]=list.get(i).getAddress();}}return data;}}3.重点代码回顾:3.1效果展⽰:3.2定义⼀个获取数据的⽅法//⽣成表格数据/*** @return*/public Object[][] queryData(){List<User> list=user.queryAllUser();data=new Object[list.size()][head.length];for(int i=0;i<list.size();i++){for(int j=0;j<head.length;j++){data[i][0]=list.get(i).getId();data[i][1]=list.get(i).getName();data[i][2]=list.get(i).getPassword();data[i][3]=list.get(i).getSex();data[i][4]=list.get(i).getAge();data[i][5]=list.get(i).getAddress();}}return data;}3.3在窗体代码中使⽤DefaultTableModle绑定数据String head[]=new String[] {"id", "姓名", "密码", "性别", "年龄", "住址"};DefaultTableModel tableModel=new DefaultTableModel(queryData(),head);table.setModel(tableModel);//JTable对象设置DefaultTableModle作为⼀个带⼤⼀⾃习的学长,我为他们写下了这篇⽂章,也将这篇⽂章送给所有学习Swing的朋友们!。
JAVA使用JDBC连接数据库的几种方式

JAVA使用JDBC连接数据库的几种方式JDBC(Java Database Connectivity)是Java编程语言用于连接数据库的一种标准API。
它提供了一种访问和操作不同类型数据库的方法。
在JDBC中,有几种不同的方式可以连接数据库。
下面是常见的几种方式以及它们的详细介绍。
1.使用JDBC驱动程序连接数据库2. DriverManager类连接数据库DriverManager是一个Java类,用于管理JDBC驱动程序。
它提供了一种简单的方法来注册和获取特定驱动程序的连接。
使用DriverManager 连接数据库时,首先需要加载驱动程序,并使用驱动程序的URL、用户名和密码创建连接。
然后可以使用这个连接执行SQL查询和更新操作。
3. DataSource接口连接数据库DataSource是一个接口,用于从数据库连接池获取连接。
连接池是一组预先创建的数据库连接,可以重复使用,从而提高应用程序的性能。
通过使用DataSource接口,可以通过配置连接池的方式来连接和管理数据库连接。
这种方式通常适用于大型应用程序或需要高并发连接的场景。
4. 使用JNDI(Java Naming and Directory Interface)连接数据库JNDI是Java提供的一种用于在Java应用程序中查找和访问命名服务的API。
通过使用JNDI,可以在应用程序中配置数据库连接信息,并使用统一的方式访问数据库。
这种方式通常适用于企业级应用程序,其中数据库连接信息可以统一管理。
5.使用第三方库连接数据库除了使用JDBC标准API连接数据库,还可以使用一些第三方库来简化数据库访问。
例如,Hibernate是一个流行的Java持久化框架,它提供了一种简单的方式来与数据库进行交互。
使用Hibernate,可以通过简单的配置来连接和管理数据库。
总结:上述是几种使用JDBC连接数据库的方式。
每种方式都有自己的优势和适用场景。
jdbc使用步骤

jdbc使用步骤JDBC使用步骤JDBC(Java Database Connectivity)是Java程序连接数据库的一种标准接口。
通过JDBC,我们可以在Java程序中访问和操作各种数据库。
下面将介绍使用JDBC连接数据库的步骤。
1. 导入JDBC相关的包在Java程序中使用JDBC,首先需要导入JDBC相关的包。
通常使用的包包括java.sql和javax.sql。
可以使用import语句导入这些包,以便在代码中使用JDBC提供的类和接口。
2. 加载数据库驱动程序在使用JDBC之前,需要先加载数据库驱动程序。
驱动程序是一个Java类,用于与特定的数据库进行通信。
不同的数据库有不同的驱动程序,需要根据使用的数据库选择相应的驱动程序。
可以使用Class类的forName()方法来动态加载驱动程序。
3. 建立数据库连接在加载了数据库驱动程序之后,就可以建立与数据库的连接了。
首先需要创建一个Connection对象,该对象表示与数据库的物理连接。
可以使用DriverManager类的getConnection()方法来建立数据库连接。
该方法接收数据库的URL、用户名和密码等参数,返回一个代表数据库连接的Connection对象。
4. 创建Statement对象在建立了数据库连接之后,就可以创建Statement对象了。
Statement对象用于向数据库发送SQL语句并接收执行结果。
可以通过Connection对象的createStatement()方法来创建Statement对象。
5. 执行SQL语句通过Statement对象可以执行SQL语句。
可以使用Statement对象的executeUpdate()方法执行更新操作(如插入、删除、修改),该方法返回一个整数,表示受影响的行数。
可以使用Statement对象的executeQuery()方法执行查询操作,该方法返回一个ResultSet对象,表示查询结果集。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
杨教授大学堂 精心创作的优秀程序员 职业提升必读系列资料
modifyKind = new javax.swing.JTextField();
modifyPrice = new javax.swing.JTextField();
jLabel8 = new javax.swing.JLabel();
} } 1.1.3 主程序类 MainFrame 程序代码示例 import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.Statement; import javax.swing.table.DefaultTableModel; public class MainFrame extends javax.swing.JFrame { private DatabaseConnection dc = new DatabaseConnection();
杨教授大学堂 精心创作的优秀程序员 职业提升必读系列资料
应用 Java Swing GUI 界面技术实现的可演示 Java JDBC 数据库操作技术 的应用实例
1.1.1 本示例使用 MySql 数据库系统 本示例可演示 Java JDBC 数据库操作技术的应用实例,实现了对数据库中数据库表
EBook 的增、删、改和查的功能。 1.1.2 用于获取数据库连接的 DataBaseConnection 程序类代码示例
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("\u6570\u636e\u5e93\u5b9e\u9a8c\u7a0b\u5e8f");
jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.crea
initComponents(); } private void initComponents() {
jPanel1 = new javax.swing.JPanel(); jLabel2 = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel(); addName = new javax.swing.JTextField(); addKind = new javax.swing.JTextField(); addPrice = new javax.swing.JTextField(); add = new javax.swing.JButton(); jPanel2 = new javax.swing.JPanel(); statusBar = new javax.swing.JLabel(); jScrollPane1 = new javax.swing.JScrollPane(); bookTable = new javax.swing.JTable(); jPanel3 = new javax.swing.JPanel(); jLabel5 = new javax.swing.JLabel(); jLabel6 = new javax.swing.JLabel(); jLabel7 = new javax.swing.JLabel(); modifyName = new javax.swing.JTextField();
杨教授大学堂,版权所有,盗版必究。 1/18 页
杨教授大学堂 精心创作的优秀程序员 职业提升必读系列资料
private Connection con; private Statement stmt; private PreparedStatement pstmt; private ResultSet rst; private ResultSetMetaData metaData; private String sqlString; private String[] columnNames; private Object[][] dataRows; private int selectIndex; public MainFrame() {
public class DatabaseConnection { public String classDriver = "com.mysql.jdbc.Driver"; public String dbUrl = "jdbc:mysql://localhost:3306/database"; public String user = "root"; public String password ="admin"; public DatabaseConnection() { }
jLabel9 = new javax.swin.JButton();
modifyId = new javax.swing.JLabel();
delete = new javax.swing.JButton();
queryBook = new javax.swing.JButton();
public Connection getConnection() throws SQLException, ClassNotFoundException{ Class.forName(classDriver); Connection connection = DriverManager.getConnection(dbUrl, user, password); return connection;