如何在Java中使用Table

2023-03-07 09:44:47 浏览数 (1)

大家好,我是小面,今天给大家分享一下在java中如何运用Table。

在Java中,表用于将数据排列成列和行。列是表中水平排列的空间,而行是表中垂直排列的空间。列和行之间的交点称为单元格,用于保存单条数据。

在Java中,开发人员可以使用JTable方法在其应用程序中创建表。JTable是从JComponent类继承的Swing组件。

如何在Java中创建表

要创建表,需要创建JTable类的实例。您需要在其构造函数中为要构造的表提供两个参数(row和column),如以下示例代码段所示:

代码语言:javascript复制
JTable table = new JTable (row, column);

row和column的值可以由两个整数值组成,如下所示:

代码语言:javascript复制
JTable table = new JTable (5,3);

上面的语句创建了一个包含5行3列的表。

程序员也可以为每行中的数据提供一个二维数组,为列名提供一个一维数组,而不是为JTable构造函数提供整数。以下是如何使用数组在Java中创建表:

代码语言:javascript复制
JTable(Object[][] rowData, Object[] columnNames)

下面是一些示例代码,展示了如何用Java创建一个表并填充数据:

代码语言:javascript复制
import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
 
class Table{
   public static void main(String args[]){
      JFrame frame = new JFrame();
 
      String[] columnNames = {"姓名", "年龄", "是否学生"};
 
      Object[][] data = {
       {"陈晨曦", new Integer(5), new Boolean(false)},
       {"阿星", new Integer(3), new Boolean(true)},
       {"阿楠", new Integer(2), new Boolean(false)},
       {"高东",new Integer(20), new Boolean(true)},
       {"阿强", new Integer(10), new Boolean(false)}
   };
    JTable table = new JTable(data, columnNames);
 
   frame.add(table);
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   frame.setSize(400,400);
   frame.setLocationRelativeTo(null);  
   frame.setVisible(true);
   }
}

如果在Idea中运行此代码,它将生成以下输出:

当您单击上述任何一个单元格时,您会注意到其中的数据是可编辑的。如果您只是向用户展示数据,这不是一个特别理想的功能。此外,在向用户演示时,所有数据都被视为字符串。

另一个值得关注的问题是,如果您在数据库对象中查询特定值,则必须将所有值复制到数组或向量中。

为了避免这些问题,您可以使用模型创建表格。

如何在Java中使用模型创建表

首先,了解如何处理表数据很重要。所有表(包括使用JTable方法创建的表)都使用表模型来管理其数据。当开发人员没有向JTable的构造函数提供表模型时,将自动为其创建DefaultTableModel的实例。因此,如果需要使用自定义模型,则需要将其提供给JTable构造函数,如以下示例代码所示:

代码语言:javascript复制
 JTable table = new JTable(new MyTableModel());

要定义表模型,程序员需要创建一个扩展AbstractTableModel类的类:

代码语言:javascript复制
class MyTableModel extends AbstractTableModel{
}

在表模型中,可以包括行和列名的数据,如前面的JTable示例所示。为了确保表模型类是一个具体的类,您需要实现AbstractTableModel的以下三个方法:

代码语言:javascript复制
public int getRowCount();
public int getColumnCount();
public Object getValueAt(int row, int column);

您可以实现更多的方法,但必须确保上面的方法是您实现的方法之一。您可以从官方的Oracle API文档中找到其他方法的描述。

下面的代码示例展示了如何在Java中使用表模型:

代码语言:javascript复制
import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
 
class TableUsingModel{
   public static void main(String args[]){
      JFrame frame = new JFrame();
      JTable table = new JTable(new MyTableModel());
 
      frame.add(table);
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setSize(400,400);
      frame.setLocationRelativeTo(null);  
      frame.setVisible(true);
   }
}
 
class MyTableModel extends AbstractTableModel {
   String[] columnNames = {"姓名", "年龄", "位置"};
 
      Object[][] data = {
       {"陈晨曦", new Integer(25), "北京"},
       {"阿星", new Integer(31), "上海"},
       {"阿楠", new Integer(29), "河南"},
       {"高东",new Integer(20), "浙江"},
       {"阿强", new Integer(18), "福建"}
   };
 
   public int getRowCount() {
       return data.length;
   }
 
   public int getColumnCount() {
       return columnNames.length;
   }
  
   public Object getValueAt(int row, int col) {
       return data[row][col];
   }
 
}

这将产生以下输出:

这一次,尝试双击任何单元格,你会发现它是不可编辑的。

如何在Java中管理列宽和列高

如果要设置行的高度,可以使用setRowHeight()方法。

代码语言:javascript复制
JTable table = new JTable(data, columnNames);
table.setRowHeight(80);

上述示例将每行的高度设置为80像素。

要设置列的宽度,可以使用setPreferredWidth()方法。首先,需要创建TableColumnModel类型的列模型。然后,您可以获得所需的特定列,然后设置其首选宽度。下面是一些示例代码,说明如何在Java中设置表的列宽:

代码语言:javascript复制
TableColumnModel columnModel = table.getColumnModel();
columnModel.getColumn(2).setPreferredWidth(200);

小结

在本编程教程中,程序员学习了如何使用JTable或表模型在Java中创建表。

上面显示的代码示例将表直接添加到JFrame容器中。但是,您可以将表添加到滚动窗格中,这样当数据超出容器时,用户可以轻松浏览数据。

0 人点赞