`
seawavenews
  • 浏览: 230301 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

如何在一个窗口显示 一张表--JAVA

阅读更多

jdk\demo\jfc\TableExample\  
   
  看看这个例子就差不多了  

----------------------------------------

import   java.util.Vector;  
  import   java.sql.*;  
  import   javax.swing.table.AbstractTableModel;  
  import   javax.swing.event.TableModelEvent;  
   
  public   class   JDBCAdapter   extends   AbstractTableModel   {  
          Connection                     connection;  
          Statement                       statement;  
          ResultSet                       resultSet;  
          String[]                         columnNames   =   {};  
          Vector rows   =   new   Vector();  
          ResultSetMetaData       metaData;  
   
          public   JDBCAdapter(String   url,   String   driverName,  
                                                String   user,   String   passwd)   {  
                  try   {  
                          Class.forName(driverName);  
                          System.out.println("Opening   db   connection");  
   
                          connection   =   DriverManager.getConnection(url,   user,   passwd);  
                          statement   =   connection.createStatement();  
                  }  
                  catch   (ClassNotFoundException   ex)   {  
                          System.err.println("Cannot   find   the   database   driver   classes.");  
                          System.err.println(ex);  
                  }  
                  catch   (SQLException   ex)   {  
                          System.err.println("Cannot   connect   to   this   database.");  
                          System.err.println(ex);  
                  }  
            }  
   
          public   void   executeQuery(String   query)   {  
                  if   (connection   ==   null   ||   statement   ==   null)   {  
                          System.err.println("There   is   no   database   to   execute   the   query.");  
                          return;  
                  }  
                  try   {  
                          resultSet   =   statement.executeQuery(query);  
                          metaData   =   resultSet.getMetaData();  
   
                          int   numberOfColumns   =     metaData.getColumnCount();  
                          columnNames   =   new   String[numberOfColumns];  
                          //   Get   the   column   names   and   cache   them.  
                          //   Then   we   can   close   the   connection.  
                          for(int   column   =   0;   column   <   numberOfColumns;   column++)   {  
                                  columnNames[column]   =   metaData.getColumnLabel(column+1);  
                          }  
   
                          //   Get   all   rows.  
                          rows   =   new   Vector();  
                          while   (resultSet.next())   {  
                                  Vector   newRow   =   new   Vector();  
                                  for   (int   i   =   1;   i   <=   getColumnCount();   i++)   {  
                          newRow.addElement(resultSet.getObject(i));  
                                  }  
                                  rows.addElement(newRow);  
                          }  
                          //     close();   Need   to   copy   the   metaData,   bug   in   jdbc:odbc   driver.  
                          fireTableChanged(null);   //   Tell   the   listeners   a   new   table   has   arrived.  
                  }  
                  catch   (SQLException   ex)   {  
                          System.err.println(ex);  
                  }  
          }  
   
          public   void   close()   throws   SQLException   {  
                  System.out.println("Closing   db   connection");  
                  resultSet.close();  
                  statement.close();  
                  connection.close();  
          }  
   
          protected   void   finalize()   throws   Throwable   {  
                  close();  
                  super.finalize();  
          }  
   
          //////////////////////////////////////////////////////////////////////////  
          //  
          //                           Implementation   of   the   TableModel   Interface  
          //  
          //////////////////////////////////////////////////////////////////////////  
   
          //   MetaData  
   
          public   String   getColumnName(int   column)   {  
                  if   (columnNames[column]   !=   null)   {  
                          return   columnNames[column];  
                  }   else   {  
                          return   "";  
                  }  
          }  
   
          public   Class   getColumnClass(int   column)   {  
                  int   type;  
                  try   {  
                          type   =   metaData.getColumnType(column+1);  
                  }  
                  catch   (SQLException   e)   {  
                          return   super.getColumnClass(column);  
                  }  
   
                  switch(type)   {  
                  case   Types.CHAR:  
                  case   Types.VARCHAR:  
                  case   Types.LONGVARCHAR:  
                          return   String.class;  
   
                  case   Types.BIT:  
                          return   Boolean.class;  
   
                  case   Types.TINYINT:  
                  case   Types.SMALLINT:  
                  case   Types.INTEGER:  
                          return   Integer.class;  
   
                  case   Types.BIGINT:  
                          return   Long.class;  
   
                  case   Types.FLOAT:  
                  case   Types.DOUBLE:  
                          return   Double.class;  
   
                  case   Types.DATE:  
                          return   java.sql.Date.class;  
   
                  default:  
                          return   Object.class;  
                  }  
          }  
   
          public   boolean   isCellEditable(int   row,   int   column)   {  
                  try   {  
                          return   metaData.isWritable(column+1);  
                  }  
                  catch   (SQLException   e)   {  
                          return   false;  
                  }  
          }  
   
          public   int   getColumnCount()   {  
                  return   columnNames.length;  
          }  
   
          //   Data   methods  
   
          public   int   getRowCount()   {  
                  return   rows.size();  
          }  
   
          public   Object   getValueAt(int   aRow,   int   aColumn)   {  
                  Vector   row   =   (Vector)rows.elementAt(aRow);  
                  return   row.elementAt(aColumn);  
          }  
   
          public   String   dbRepresentation(int   column,   Object   value)   {  
                  int   type;  
   
                  if   (value   ==   null)   {  
                          return   "null";  
                  }  
   
                  try   {  
                          type   =   metaData.getColumnType(column+1);  
                  }  
                  catch   (SQLException   e)   {  
                          return   value.toString();  
                  }  
   
                  switch(type)   {  
                  case   Types.INTEGER:  
                  case   Types.DOUBLE:  
                  case   Types.FLOAT:  
                          return   value.toString();  
                  case   Types.BIT:  
                          return   ((Boolean)value).booleanValue()   ?   "1"   :   "0";  
                  case   Types.DATE:  
                          return   value.toString();   //   This   will   need   some   conversion.  
                  default:  
                          return   "\""+value.toString()+"\"";  
                  }  
   
          }  
   
          public   void   setValueAt(Object   value,   int   row,   int   column)   {  
                  try   {  
                          String   tableName   =   metaData.getTableName(column+1);  
                          //   Some   of   the   drivers   seem   buggy,   tableName   should   not   be   null.  
                          if   (tableName   ==   null)   {  
                                  System.out.println("Table   name   returned   null.");  
                          }  
                          String   columnName   =   getColumnName(column);  
                          String   query   =  
                                  "update   "+tableName+  
                                  "   set   "+columnName+"   =   "+dbRepresentation(column,   value)+  
                                  "   where   ";  
                          //   We   don't   have   a   model   of   the   schema   so   we   don't   know   the  
                          //   primary   keys   or   which   columns   to   lock   on.   To   demonstrate  
                          //   that   editing   is   possible,   we'll   just   lock   on   everything.  
                          for(int   col   =   0;   col<getColumnCount();   col++)   {  
                                  String   colName   =   getColumnName(col);  
                                  if   (colName.equals(""))   {  
                                          continue;  
                                  }  
                                  if   (col   !=   0)   {  
                                          query   =   query   +   "   and   ";  
                                  }  
                                  query   =   query   +   colName   +"   =   "+  
                                          dbRepresentation(col,   getValueAt(row,   col));  
                          }  
                          System.out.println(query);  
                          System.out.println("Not   sending   update   to   database");  
                          //   statement.executeQuery(query);  
                  }  
                  catch   (SQLException   e)   {  
                          //           e.printStackTrace();  
                          System.err.println("Update   failed");  
                  }  
                  Vector   dataRow   =   (Vector)rows.elementAt(row);  
                  dataRow.setElementAt(value,   column);  
   
          }  
  }

分享到:
评论

相关推荐

    java实现gif动画效果(java显示动态图片)

    通常,我们会在`run`方法中添加一个循环,每隔一定时间调用`repaint`方法来重新绘制窗口,从而展示下一张图片。 5. **`ImageObserver`接口** 在`paint`方法中,我们创建了一个匿名内部类实现`ImageObserver`接口。...

    java 使用Icon组件显示一张图片

    在Java编程语言中,`Icon`组件是一个非常实用的类,它被用来在GUI(图形用户界面)上显示小图像,比如按钮、标签等组件的图标。本篇将深入讲解如何利用`Icon`组件来展示图片,特别是通过`ImageIcon`类实现这一功能。...

    java小应用程序 连续显示图片

    在Java编程中,实现一个能够连续显示多张图片的小应用程序,主要涉及以下几个核心知识点: 1. **Swing库**:Java Swing是Java Foundation Classes (JFC)的一部分,用于构建图形用户界面(GUI)。在这个案例中,我们...

    Java画图(画一张笑脸)

    这将在屏幕上显示一个包含笑脸的窗口。 通过这个简单的示例,我们可以看到Java强大的图形绘制能力。在实际应用中,我们可以利用这些基础构建复杂的图形用户界面,实现游戏、数据可视化等多种功能。对于Java程序员来...

    Java-简易图片浏览器-源代码

    这个程序可能是在学习Java基础和GUI编程时的一个常见课程设计任务,旨在帮助学生理解事件处理、Swing库以及文件I/O等核心概念。 1. **Swing库的使用** Swing是Java AWT(抽象窗口工具包)的扩展,提供了丰富的用户...

    java-JPanel滑动切换

    在本案例中,"java-JPanel滑动切换"可能指的是在JPanel之间实现类似滑动动画的效果,这种效果通常在移动应用或者某些桌面应用中用于切换不同的视图或面板。 要实现JPanel的滑动切换,我们需要以下几个关键知识点: ...

    java-Swing-PHOTO.zip_java swing相册_图片管理

    标题 "java-Swing-PHOTO.zip_java swing相册_图片管理" 提示我们这个压缩包包含了一个基于Java Swing开发的相册应用,用于管理和浏览图片。这个应用很可能实现了以下关键知识点: 1. **JFrame**: JFrame是Java ...

    第9章Java-Swing图形用户界面-Java面向对象程序设计教程-微课视频-程杰-清华大学出版社.pptx

    - CardLayout:允许在容器中切换不同的组件,就像卡片堆叠一样,每次只能显示一张“卡片”。 9.4 常用控件: Java Swing提供了各种常用控件,如JButton(按钮)、JLabel(标签)、JTextField(文本字段)、...

    java 图形界面GUI代码

    Java图形用户界面(GUI)是Java编程中一个重要的部分,用于创建交互式的、可视化的应用程序。GUI允许用户通过鼠标和键盘等输入设备与程序进行交互,使得程序更加友好且易于操作。下面,我们将深入探讨Java GUI开发的...

    Java-slide.rar_java sli_javaSlide_java图片幻灯片_java幻灯片播放_slide java

    本项目名为"Java-slide.rar",显然它是一个包含了Java源代码和可能的资源文件的压缩包,用于实现一个Java图片幻灯片播放器。下面我们将深入探讨这个Java幻灯片播放器所涉及的关键知识点。 首先,我们需要了解Java的...

    拼图-Java课程设计

    在进行Java课程设计时,完成这样一个拼图程序不仅能巩固Java语法,还能深入理解面向对象编程的概念,提高解决问题的能力。此外,这样的项目实践也有助于熟悉软件工程的流程,包括需求分析、设计、编码、测试和文档...

    JAVA拼图游戏设计报告

    本报告详细阐述了一个基于Java技术开发的拼图游戏的设计与实现。游戏的主要特点是自动化处理图片切割与加载过程,避免用户手动操作,且能根据图片大小自适应调整窗口尺寸,防止拼图错误和错位。游戏记录通过*.rc格式...

    使用SDK抓取海康威视录像机图片及视频流实时显示

    在实现实时显示时,可以使用Java Swing或JavaFX等图形用户界面库创建窗口,并在窗口上绘制`BufferedImage`对象。每接收到一帧视频,就更新窗口内容,实现动态播放。 为了支持二次开发,你需要设计良好的接口和类...

    Java幻灯片 Java幻灯片

    在Java中实现幻灯片效果,首先要创建一个包含所有幻灯片内容的容器,例如使用JPanel数组或者ArrayList来存储每一张幻灯片。每张幻灯片可以是一个包含图片、文本或者其他组件的独立面板。然后,可以利用布局管理器...

    Java-tupianchakanqi.rar_JAVA图片查看器

    在这个图片查看器中,可能使用了`JFrame`作为主窗口,`JLabel`显示图片,`JButton`作为控制按钮(如打开、关闭、上一张、下一张等)。`ActionListener`接口用于监听用户操作并触发相应的行为。 4. **事件处理**:...

    Java Swing CardLayout卡片布局的实现示例

    这个示例中,我们创建了一个 JFrame 窗口,并在其中添加了一个 JPanel 面板,该面板使用 CardLayout 布局管理器。我们添加了三个按钮到面板中,并使用 `layout.show(panel, "btn02")` 显示第二个按钮。然后,我们...

    java-swing编程小试牛刀之图片查看器

    本文将详细介绍一个基于Java Swing的简易图片查看器的设计与实现过程。该查看器具备基本的图片浏览功能,包括打开文件、切换图片以及关闭文件等操作。通过本项目的实践,读者不仅能加深对Swing组件的理解,还能掌握...

    opencv-3.1.0.exe VS2015显示一张图片

    在计算机视觉领域,OpenCV(开源计算机视觉库)是一个广泛使用的工具,尤其在图像处理和机器学习方面。本文将详细探讨如何使用OpenCV 3.1.0版本在Visual Studio 2015环境下显示一张图片,同时涵盖相关的重要知识点。...

    Java彩色图片转换黑白(灰度图).rar

    在"codesc.net"这个文件中,很可能包含了一个Java源码示例,演示了如何执行上述步骤。源码可能包括读取图片文件、创建`BufferedImage`对象、遍历并转换像素以及在窗口中显示结果。这个例子是学习Java图形处理和色彩...

    图片查看器 JAVA

    该程序是一个简单的基于Java Swing框架的桌面应用,用于展示存储在本地目录中的图像文件。程序的主要功能包括显示指定数量的图片,并通过工具栏按钮控制图片的前后切换。 ### 项目组成及作用 #### LastTest类 这是...

Global site tag (gtag.js) - Google Analytics