JAVA中DEFAULTTABLEMODEL的用法
defaulttablemodel用法
defaulttablemodel用法Java Swing中的JTable是一个非常有用的组件,用于展示和编辑表格数据。
然而,在JTable中显示数据时,我们需要使用TableModel对象来存储和管理数据。
其中,DefaultTableModel是JTable默认使用的TableModel实现类之一。
DefaultTableModel提供了一组方法来管理表格数据。
它使用Vector来存储数据,这使得它非常灵活和易于使用。
DefaultT ableModel允许用户创建一个空的TableModel,以便稍后将数据添加到其中。
用户也可以创建包含数据的TableModel。
一旦TableModel创建完成,它可以被设置为JTable的数据源。
DefaultTableModel的构造方法需要传入两个参数:列名(Vector对象)和行数(int类型)。
当设置数据时,它可以直接修改Vector对象的数据。
在修改数据后,可以调用fireTableDataChanged()方法来通知JTable更新数据。
示例代码:DefaultTableModel model = new DefaultTableModel();设置列名Vector<String> columnNames = new Vector<String>(); columnNames.add("ID");columnNames.add("Name");model.setColumnIdentifiers(columnNames);添加数据行Vector<Object> rowData = new Vector<Object>();rowData.add(1);rowData.add("张三");model.addRow(rowData);设置数据源JTable table = new JT able(model);除了设置列名和数据,DefaultTableModel还提供了一些其他的方法来管理数据。
defaultlistmodel用法
defaultlistmodel用法1. 概述DefaultListModel是Swing提供的一个类,用于管理列表组件中的数据。
它实现了ListModel接口,并提供了一些便捷的方法来管理和操作列表数据。
本文将详细介绍DefaultListModel的用法。
2. 创建DefaultListModel对象下面是创建一个DefaultListModel对象的示例代码:DefaultListModel<String> model = new DefaultListModel<>();此处创建了一个泛型为String的DefaultListModel对象。
我们可以根据需要选择其他数据类型。
3. 添加元素DefaultListModel提供了多个方法来添加元素。
下面是几个常用的方法: - addElement(E element):向列表末尾添加一个元素。
- add(int index, E element):在指定位置插入一个元素。
- addAll(Collection<? extends E> elements):将一个集合中的所有元素添加到列表中。
- addAll(int index, Collection<? extends E> elements):将一个集合中的所有元素插入到指定位置。
示例代码:model.addElement("Apple");model.add(0, "Banana");List<String> fruits = new ArrayList<>();fruits.add("Orange");fruits.add("Mango");model.addAll(fruits);model.addAll(2, Arrays.asList("Cherry", "Grape"));4. 移除元素DefaultListModel也提供了多个方法来移除元素。
java 通过JTable显示数据
java 通过JTable显示数据Swing中的JTable类为显示大块数据提供了一种简单的机制。
JTable有很多方法用于数据的生成和编辑,其中的很多方法还可以自定义,从而更进一步增强其功能。
在使用JTable以前,我们先看一下它的构造函数有哪些,以及应该如何使用。
JTabel构造函数:●JTable( ) 建立一个新的JTables,并使用系统默认的Model。
●JTable(int numRows,int numColumns) 建立一个具有numRows行,numColumns列的空表格,使用的是DefaultTableModel.。
●JTable(Object[][] rowData,Object[][] columnNames) 建立一个显示二维数组数据的表格,且可以显示列的名称。
●JTable(TableModel dm) 建立一个JTable,有默认的字段模式以及选择模式,并设置数据模式。
●JTable(TableModel dm,TableColumnModel cm) 建立一个JTable,设置数据模式与字段模式,并有默认的选择模式。
●JTable(TableModel dm,TableColumnModel cm,ListSelectionModel sm) 建立一个JTable,设置数据模式、字段模式、与选择模式。
●JTable(Vector rowData,Vector columnNames) 建立一个以Vector为输入来源的数据表格,可显示行的名称。
在构建JTable对象之后,可以通过一些方法来设置数据显示的样式,常见的方法如下。
1.设置JTable表格大小如果JTable的一个列或者JTable窗口的大小被重新设置后,那么其他列会被相应的缩小或者放大,以适应新的窗口。
使用setAutoResizeMode( )方法就能够控制这LUMN、AUTO_RESIZE_SUBSEQUENT_COLUMNS、AUTO_RESIZE_LAST_COL UMN和AUTO_RESIZE_ALL_COLUMNS。
java设置表格的高度宽度
//标签字体
label1.setFont(newFont("微软雅黑", Font.PLAIN, 16));
//面板添加标签
panel1.add(label1, BorderLayout.NORTH);
}
EventQueue.invokeLater(newRunnable() {
publicvoidrun() {
try{
ResizeTableTest frame =newResizeTableTest();
frame.setVisible(true);
}catch(Exception e) {
e.printStackTrace();
//面板2
JPanel panel2 =newJPanel();
//容器添加面板
contentPane.adanel2.setLayout(newBorderLayout(0, 0));
//标签
JLabel label2 =newJLabel("自定义表格");
//表格行高
table2.setRowHeight(35);
//构造JTableHeader,使用cm作为列模型对其进行初始化。
// table2.getTableHeader()返回此JTable所使用的tableHeader
JTableHeader header =table2.getTableHeader();
//增长行
model.addRow(newObject[] {"1","Java"});
java中model的用法
java中model的用法
Java中的Model是指数据模型,用于表示业务数据的结构和关系,是MVC模式中的M(模型)。
在Java中,通常被用来表示数据库中的数据、配置信息、业务逻辑等。
Model可以用来存储和管理数据,同时也可以提供一些数据操作方法,例如增删改查等。
在Java中,Model通常采用面向对象的方式来实现,其实现方式包括POJO、DTO、VO等。
POJO是指Plain Old Java Object,即普通的Java对象,通常用于表示数据库中的数据。
DTO是指Data Transfer Object,即数据传输对象,通常用于在业务层和视图层之间传递数据。
VO是指Value Object,即值对象,通常用于表示一些不可变的业务对象。
在使用Model的过程中,需要注意以下几点:
1. Model应该尽量简洁,只包含必要的属性和方法。
2. Model应该与业务逻辑分离,不应该包含过多的业务代码。
3. Model应该遵循面向对象的设计原则,例如单一职责、开闭原则等。
4. Model的属性应该尽量使用封装,避免对外暴露内部状态。
总之,Java中的Model是一个非常重要的概念,它是开发业务应用程序的基础。
只有充分理解和掌握Model的用法,才能写出高质量的代码,提高开发效率和程序可维护性。
- 1 -。
java个人所得税代码
import java.awt.event.*;import java.io.*;import javax.swing.*;import javax.swing.table.DefaultTableModel;public class shuilv extends JFrame implements ActionListener{private JTextField text_money;private JButton button;private JTable table;Object datas[][]=new Object[0][4];String titles[]={"收入总额(元)","适用税率(%)","速算扣除(元)","应纳利息(元)"};String[]header=titles;String ss[]=new String[4];JScrollPane js;DefaultTableModel model;private int i;public shuilv(){super("个人所得税计算");this.setBounds(400,200,500,200);this.setResizable(false);this.setBackground(java.awt.Color.lightGray);this.setDefaultCloseOperation(EXIT_ON_CLOSE);JPanel panel = new JPanel();this.getContentPane().add(panel, "North");panel.add(new JLabel("收入总额"));text_money = new JTextField("0",6);panel.add(text_money);panel.add(new JLabel("元"));button = new JButton("计算");panel.add(button);button.addActionListener(this);table=new JTable(datas, titles);js=new JScrollPane(table);this.getContentPane().add(js);this.setVisible(true);}public void updateTable(Object[] objTable){model.addRow(objTable);//给model对象添加数据行table.setModel(model);//把model作为JTable的数据来源}public void actionPerformed(ActionEvent e) //单击事件处理方法{model=new DefaultTableModel(header,0);double money=Double.parseDouble(""+text_money.getText()); //本金余额FileReader fin=null;BufferedReader bin=null;try{fin=new FileReader("data.txt"); //bin=new BufferedReader(fin);}catch(Exception ex){System.out.println("fin "+fin);}double del[]=new double[7]; //月还本金double rate[]=new double[7];double mon[]=new double[7];String dels=null;String rates=null;String mons=null;try{dels=bin.readLine();rates=bin.readLine();mons=bin.readLine();System.out.println("dels "+dels.length());bin.close();fin.close();}catch(Exception ex){}String aa="";int ii=0;for(int i=0;i<dels.length();i++){if(dels.charAt(i)!=',')aa+=dels.charAt(i);else{del[ii]=Double.parseDouble(aa);ii++;aa="";}}ii=0;aa="";for(int i=0;i<rates.length();i++){if(rates.charAt(i)!=',')aa+=rates.charAt(i);else{rate[ii]=Double.parseDouble(aa);ii++;aa="";}}ii=0;aa="";for(int i=0;i<mons.length();i++){if(mons.charAt(i)!=',')aa+=mons.charAt(i);else{mon[ii]=Double.parseDouble(aa);ii++;aa="";}}for(int i=0;i<7;i++){System.out.println(del[i]+" "+rate[i]);}ss[0] = String.format("%9.2f",money);for(int j=0;j<=5;j++)if(mon[j]<=money&&money<=mon[j+1]){i=j;break; //找到就可以退出循环了}/* if(mon[0]<=money&&money<=mon[1]){i=0;}if(mon[1]<money&&money<mon[2]){i=1;}if(mon[2]<money&&money<mon[3]){i=2;}if(mon[3]<money&&money<=mon[4]){i=3;}if(mon[4]<money&&money<=mon[5]){i=4;}if(mon[5]<money&&money<=mon[6]){i=5;} */if(mon[6]<money){i=6;}ss[1] = String.format("%9.2f",rate[i]);ss[2] = String.format("%9.2f",del[i]);ss[3] = String.format("%9.2f",money*rate[i]*0.01-del[i]);this.updateTable(ss);/* try{FileWriter fout=new FileWriter("data.txt");fout.write("0,105,555,1005,2755,5505,13505,\r\n");fout.write("3,10,20,25,30,35,45,\r\n");fout.close();}catch(Exception ex){}*/}public static void main(String args[]){new shuilv();}}。
java jtable用法
java jtable用法Java JTable用法一、概述JTable是Java Swing库中的一个控件,用于在图形用户界面中显示和编辑表格数据。
它提供了丰富的功能和灵活的配置选项,使开发人员能够轻松地创建和管理数据表格。
二、创建JTable对象1.构造函数:可以使用JTable的构造函数来创建一个空的表格:JTable table = new JTable();2.数据模型:可以通过设置数据模型来创建一个包含指定数据的表格:String[][] data = {{"John", "Doe"}, {"Jane", "Smith "}, {"Bob", "Johnson"}};String[] columnNames = {"First Name", "Last Name"}; JTable table = new JTable(data, columnNames);三、设置表格属性1.表头:可以使用setTableHeader()方法来设置表格的表头:JTableHeader header = ();();(new Font("Arial", , 16));(header);2.行高:可以使用setRowHeight()方法来设置表格的行高度:(30);3.列宽:可以使用setColumnWidth(int column, int width)方法来设置指定列的宽度:().getColumn(0).setPreferredWidth(100);四、添加行和列1.添加行:可以使用数据模型的addRow(Object[] rowData)方法来添加一行数据:DefaultTableModel model = (DefaultTableModel) (); (new Object[]{"Tom", "Brown"});2.添加列:可以使用数据模型的addColumn(Object columnName)方法来添加一列数据:("Age");五、单元格编辑1.编辑模式:可以使用setCellEditor()方法来设置一个单元格编辑器:DefaultCellEditor editor = new DefaultCellEditor(ne w JTextField());().getColumn(1).setCellEditor(editor);2.单元格监听:可以使用addCellEditorListener()方法来添加一个单元格编辑器监听器:(new CellEditorListener() {@Overridepublic void editingStopped(ChangeEvent e) {// 编辑完成后的处理}@Overridepublic void editingCanceled(ChangeEvent e) {// 编辑取消后的处理}});六、样式和渲染1.颜色:可以使用自定义的继承自DefaultTableCellRenderer的渲染器来设置单元格的前景色和背景色:class MyRenderer extends DefaultTableCellRenderer { public Component getTableCellRendererComponent(JTabl e table, Object value, boolean isSelected, boolean hasFo cus, int row, int column) {Component component = (table, value, isSelected,hasFocus, row, column);if (row % 2 == 0) {();} else {();}return component;}}// 设置渲染器().getColumn(1).setCellRenderer(new MyRenderer());2.字体:可以使用自定义的渲染器来设置单元格的字体:().getColumn(0).setCellRenderer(new DefaultTableCel lRenderer() {public Component getTableCellRendererComponent(JTabl e table, Object value, boolean isSelected, boolean hasFo cus, int row, int column) {Component component = (table, value, isSelected, hasFocus, row, column);(new Font("Arial", , 14));return component;}});以上是Java JTable的一些常用用法和详细讲解。
java中tbaddrow的用法
java中tbaddrow的用法Java中的tbaddrow是一个用于向表格中添加新行的方法。
它可以在表格的末尾添加新行,也可以在指定位置添加新行。
在使用tbaddrow方法之前,需要先创建一个表格对象,并确定表格的列数和行数。
使用tbaddrow方法添加新行的基本语法如下:table.tbaddrow(row, data);其中,table是表格对象的名称,row是要添加的新行的位置,data 是要添加的新行的数据。
如果要在表格的末尾添加新行,可以将row 的值设置为-1。
下面是一个示例代码,演示了如何使用tbaddrow方法向表格中添加新行:import java.awt.*;import java.awt.event.*;import javax.swing.*;public class TableDemo extends JFrame {private JTable table;private JScrollPane scrollPane;private Object[][] data;private String[] columnNames = {"姓名", "年龄", "性别"};public TableDemo() {setTitle("表格演示");setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setSize(300, 200);setLocationRelativeTo(null);data = new Object[][]{{"张三", 20, "男"}, {"李四", 22, "女"}, {"王五", 25, "男"}};table = new JTable(data, columnNames);scrollPane = new JScrollPane(table);add(scrollPane);JButton addButton = new JButton("添加新行");addButton.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {Object[] newRow = {"赵六", 28, "女"};((DefaultTableModel)table.getModel()).addRow(newRow);}});add(addButton, BorderLayout.SOUTH);setVisible(true);}public static void main(String[] args) {new TableDemo();}}在上面的示例代码中,我们创建了一个表格对象,并向其中添加了三行数据。
swing jxtreetable用法
swing jxtreetable用法Swing JXTreeTable是基于Java Swing的扩展组件,提供了一个带有树形结构的表格控件。
JXTreeTable具有JTable的所有功能以及额外的树形结构功能,可以同时展示表格和树状结构的数据。
本文将详细介绍JXTreeTable的用法,包括创建和初始化、添加数据、自定义表格和树状结构、以及其他常用操作等。
1. 创建和初始化JXTreeTable首先,创建一个JXTreeTable实例需要导入相应的包和类。
JXTreeTable位于swingx包中,可通过以下代码导入:import org.jdesktop.swingx.JXTreeTable;然后,可以通过构造函数创建JXTreeTable实例:JXTreeTable treeTable = new JXTreeTable();如果需要传递表格数据模型和树状结构数据模型,可以使用以下构造函数:TreeTableModel treeT ableModel = new MyTreeTableModel(root); 自定义树状结构数据模型TableModel tableModel = new DefaultTableModel(data, columnNames); 表格数据模型JXTreeTable treeTable = new JXTreeTable(treeTableModel, tableModel);在创建JXTreeTable实例后,可以通过以下代码设置表格的可见行数和列数:treeTable.setVisibleRowCount(10); 可见行数为10treeTable.setVisibleColumnCount(5); 可见列数为52. 添加数据添加数据到JXTreeTable可以使用默认的TableModel类或者自定义的TableModel类。
如果使用默认的TableModel类,可以使用以下代码添加行数据:DefaultTableModel model = (DefaultTableModel)treeTable.getTableModel();model.addRow(new Object[] { "Data 1", "Data 2", "Data 3" });如果需要添加树状结构的数据,可以使用以下代码:TreeTableModel treeModel = (TreeTableModel)treeTable.getTreeTableModel();treeModel.insertNodeInto(node, parent, index);其中,node是要插入的节点,parent是父节点,index是要插入的位置。
DefaultListModel
字段摘要
从类 javax.swing.AbstractListModel 继承的字段
listenerList
构造方法摘要
DefaultListModel()
int
indexOf(Object elem)
搜索 elem 的第一次出现。
int
indexOf(Object elem,
int index)
int index)
将此列表指定 index 处的组件设置为指定的对象。
void
setSize(int newSize)
设置此列表的大小。
javajtable用法
javajtable用法1. 创建JTable对象:要创建一个JTable对象,可使用其构造函数之一、以下是一个示例:JTable table = new JTable(;2.设置表头:表格的第一行通常称为表头,用于显示列名。
要设置表头,可以使用JTable的getTableHeader(方法和setDefaultRenderer(方法。
下面是一个示例:JTableHeader tableHeader = table.getTableHeader(;tableHeader.setDefaultRenderer(new MyTableHeaderRenderer(); 3.添加到容器:将JTable添加到显示表格的容器中。
例如,将它添加到一个面板中:JPanel panel = new JPanel(;panel.add(table);4.设置数据模型:JTable需要一个数据模型来存储和管理表格数据。
默认情况下,JTable使用DefaultTableModel作为其数据模型。
以下是设置数据模型的示例:DefaultTableModel model = new DefaultTableModel(;table.setModel(model);5.填充表格数据:可以通过添加行和列的方式来填充表格数据。
以下是一个示例:model.addRow(new Object[]{"John Doe", "24", "Male"});model.addRow(new Object[]{"Jane Smith", "30", "Female"}); 6.选择行和列:可以使用JTable的setRowSelectionAllowed(和setColumnSelectionAllowed(方法来允许或禁止行或列的选择。
Java中DefaultTableModel的用法
我们曾提到过DefaultTableModel类,并说明了此类是继承AbstractTableModel 抽象类而来,且实现了getColumnCount(),getRowCount()与getValueAt()3个方法。
因此在实际的使用上,DefaultTableModel比AbstractTableModel要来得简单许多,也较常被拿来使用DefaultTableModel内部使用Vector来使用表格的数据,若佻所要显示的表格格式是比较单纯的变化,笔者建议使用DefaultTableModel类会来得方便也简单许多。
若佻所要显示的数据模式非常复杂,例如我们所举的成绩表格外加学生选课信息等,像这类的表格通常显示的信息会因人面异,因此使用AbstractTableModel会比较容易设计些。
下面是DefaultTableModel的构造函数:DefaultTableModel():建立一个DefaultTableModel,里面没有任何数据. DefaultTableModel(int numRows,int numColumns):建立一个指定行列数的DefaultTableModel.DefaultTableModel(Object[][] data,Object[] columnNames):建立一个DefaultTableModel输入数据格式为Object Array.系统会自动调用setDataVector()方法来设置数据。
DefaultTableModel(Object[] columnNames,int numRows):建立一个DefaultTableModel,并具有Column Header名称与行数信息。
DefaultTableModel(Vector columnNames,int numRows):建立一个DefaultTableModel,并具有column Header名称与行数信息。
java 单元格内边距
java 单元格内边距摘要:1. Java单元格内边距的概念2.设置单元格内边距的方法3.单元格内边距的应用场景4.实例演示正文:在Java编程中,单元格内边距是指表格单元格内容与单元格边框之间的距离。
设置单元格内边距可以提高表格的可读性和实用性。
本文将介绍如何在Java中设置单元格内边距,以及应用场景和实例演示。
一、Java单元格内边距的概念在Java中,单元格内边距通常通过表格对象的`setCellPadding()`方法进行设置。
单元格内边距包括上、右、下、左边距,分别用像素值表示。
以下是一个设置单元格内边距的示例:```javaimport javax.swing.JFrame;import javax.swing.JT able;import javax.swing.table.DefaultTableModel;public class CellPaddingExample extends JFrame {public CellPaddingExample() {DefaultTableModel tableModel = newDefaultTableModel(new String[]{"姓名", "年龄", "性别"}, 0);JTable table = new JTable(tableModel);table.setCellPadding(5, 10, 5, 10); // 设置单元格内边距setTitle("Java单元格内边距示例");setSize(300, 200);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);getContentPane().add(table);}public static void main(String[] args) {SwingUtilities.invokeLater(new Runnable() {@Overridepublic void run() {new CellPaddingExample().setVisible(true);}});}}```二、设置单元格内边距的方法在Java中,可以通过以下步骤设置单元格内边距:1.创建一个表格对象,如JTable。
java jtable用法(一)
java jtable用法(一)Java JTable的用法JTable简介JTable是Java Swing库中的一个组件,用于显示和编辑表格数据。
它可以按照行和列的形式展示数据,并支持用户交互操作。
在本文中,我们将介绍一些JTable的常见用法和技巧。
创建JTable要创建一个JTable,我们首先需要创建一个TableModel。
TableModel是一个数据模型,用于存储和管理表格中的数据。
以下是创建JTable的步骤:1.创建一个二维数组或者一个实现TableModel接口的自定义类。
2.实例化DefaultTableModel类,并传入之前创建的数据数组或者自定义TableModel类的实例。
3.将DefaultTableModel实例传入JTable的构造方法中,创建JTable对象。
// 创建数据数组Object[][] data = {{"John", 25, "USA"},{"Alice", 30, "Canada"},{"Bob", 35, "UK"}};// 创建列名数组String[] columnNames = {"Name", "Age", "Country"};// 创建DefaultTableModelDefaultTableModel model = new DefaultTableModel(data, co lumnNames);// 创建JTableJTable table = new JTable(model);自定义JTable外观JTable提供了许多方法和属性,用于自定义表格的外观。
下面列举了几个常用的用法:设置表格行高使用方法可以设置表格的行高。
默认情况下,行高是根据表格内容的实际高度自动调整的。
defaultlistmodel用法
defaultlistmodel用法DefaultListModel是Java Swing框架下的一种列表模型,它可以方便地管理列表对象。
在使用Swing框架搭建GUI界面时,使用DefaultListModel可以将数据与界面分离,达到更好的代码结构和可维护性。
下面将介绍DefaultListModel的用法,包括如何创建、添加和删除列表项、如何获取和设置列表项内容等。
1. 创建DefaultListModel对象创建DefaultListModel对象很简单,使用默认构造函数即可:```javaDefaultListModel<String> listModel = new DefaultListModel<>(); ```2. 添加和删除列表项添加列表项的方法是调用add方法:```javalistModel.add(0, "hello");```该方法将“hello”添加到列表的第一个位置。
同样地,可以使用remove方法删除指定位置的列表项:```javalistModel.remove(0);```该方法将列表的第一个位置的列表项删除。
3. 获取和设置列表项内容获取列表项内容可以使用get方法:```javaString item = listModel.get(0);```该方法将返回列表的第一个位置的列表项内容。
设置列表项内容可以使用set方法:```javalistModel.set(0, "world");```该方法将列表的第一个位置的列表项内容设置为“world”。
4. 遍历列表项遍历列表项可以使用iterator方法返回一个迭代器,然后使用while循环遍历:```javaIterator<String> iter = listModel.iterator();while (iter.hasNext()) {String item = iter.next();System.out.println(item);}```该代码片段将遍历列表项并打印出来。
java celltype用法
java celltype用法Java的celltype用法在Java中,celltype是一个非常有用的数据类型。
它可以通过javax.swing.table包编程来访问和使用。
celltype是一个接口,它定义了表格单元格中的数据的类型。
这个接口有三个实现类,分别是:1. DefaultCellEditor2. DefaultTableColumnModel3. DefaultTableModel在默认的表格编辑器(DefaultCellEditor)中,celltype的作用是确定用户可以输入哪些数据类型并进行限制。
在默认的表格列模型(DefaultTableColumnModel)中,celltype的作用是确定该列的数据类型。
在默认表格模型(DefaultTableModel)中,celltype的作用是定义单元格中的数据类型。
在实践中,我们可以通过自定义celltype来扩展Java表格的功能。
自定义celltype可以让我们在表格中使用任何自定义数据类型,而不受默认数据类型的限制。
下面是一个自定义celltype的示例:我们要在表格中显示一个简单的数据类型,名为Person,它包含一个名字和一个年龄属性。
首先,我们需要创建一个自定义的celltype类,继承AbstractCellEditor类和TableCellEditor接口。
然后,我们需要实现getCellEditorValue和getTableCellEditorComponent方法。
这两个方法分别用于从单元格中获取值和将值写回单元格。
public class PersonCellEditor extends AbstractCellEditor implements TableCellEditor {private Person person;private JTextField textField;public PersonCellEditor() {textField = new JTextField();textField.setBorder(BorderFactory.createEmptyBorder());}public Object getCellEditorValue() {person.setName(textField.getText());//从文本框中读取名字并设置给person对象return person;}public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {if (value != null) {person = (Person) value;//根据传入的value更新person 对象textField.setText(person.getName());}return textField;}}然后,我们可以在表格中使用自定义celltype,如下所示:JTable table = new JTable(new PersonTableModel()); TableColumn column =table.getColumnModel().getColumn(0);//获取第一列column.setCellEditor(new PersonCellEditor());//设置celltype在这个示例中,我们将自定义的celltype设置为第一列,然后将PersonTableModel设置为表格模型。
java中table的用法
在 Java 中,通常使用 JTable 类来创建和操作表格(Table)。
JTable 是 Swing 组件库中的一部分,它允许你在界面中展示和编辑表格数据。
以下是 JTable 的基本用法:1. 创建 JTable 对象:你可以通过创建 JTable 对象来表示一个表格。
通常,你需要提供表格的数据模型(TableModel)来指定表格中的数据内容。
2. 设置数据模型:数据模型负责存储和管理表格中的数据。
你可以使用默认的数据模型 DefaultTableModel,也可以自定义实现 TableModel 接口的数据模型。
3. 显示表格:将 JTable 放置在界面中的某个容器中,并确保它能够被用户看到。
4. 自定义表格外观和行为:你可以对 JTable 进行各种自定义,包括调整列宽、行高,设置表头,添加排序和过滤功能等。
下面是一个简单的示例代码,演示了如何在 Java 中创建一个基本的 JTable:```javaimport javax.swing.JFrame;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.table.DefaultTableModel;public class Main {public static void main(String[] args) {JFrame frame = new JFrame("JTable Example");// 表格数据Object[][] data = {{"John", 25, "Male"},{"Amy", 30, "Female"},{"Bob", 20, "Male"}};// 表头String[] columns = {"Name", "Age", "Gender"};// 创建数据模型DefaultTableModel model = new DefaultTableModel(data, columns);// 创建表格JTable table = new JTable(model);// 将表格放入滚动窗格中,并添加到界面中JScrollPane scrollPane = new JScrollPane(table);frame.add(scrollPane);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.pack();frame.setVisible(true);}}```上述示例中,我们创建了一个简单的 JTable,并将其放置在一个 JFrame 中。
JTable
columnNameV.add(columnNames[column]);
}
Vector<Vector<String>> tableValueV = new Vector<>();
frame.setVisible(true);
}
public ExampleFrame_02() {
super();
setTitle("创建不可滚动的表格");
setBounds(100, 100, 240, 150);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
import java.awt.*;
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;
public class ExampleFrame_03 extends JFrame {
/**
*
*/
/**
*
*/
private static final long serialVersionUID = 1L;
public static void main(String args[]) {
ExampleFrame_02 frame = new ExampleFrame_02();
// 创建显示表格的滚动面板
JScrollPane scrollPane = new JScrollPane(table);
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
} if(e.getActionCommand().equals("删除行")) {
int rowcount = defaultModel.getRowCount()-1; //getRowCount
返回行数,
rowcount<0 代表已经没有任何行了。
if(rowcount >= 0) { defaultModel.removeRow(rowcount); defaultModel.setRowCount(rowcount); //删除行比较简单,只要用 DefaultTableModel 的 removeRow()方法即可。删 除 //行完毕后必须重新设置列数,也就是使用 DefaultTableModel 的 setRowCount()方法来设置。 } } table.revalidate(); } public static void main(String args[]) { new AddRemoveCells();
我们曾提到过DefaultTableModel 类,并说明了此类是继承 AbstractTableModel
抽象类而来,且实现了 getColumnCount(),getRowCount()与 getValueAt()3 个方法。因此在实际的使用上,DefaultTableModel 比 AbstractTableModel 要 来得简单许多,也较常被拿来使用 DefaultTableModel 内部使用 Vector 来使用 表格的数据,若佻所要显示的表格格式是比较单纯的变化,笔者建议使用 DefaultTableModel 类会来得方便也简单许多。若佻所要显示的数据模式非常复 杂, 例如我们所举的成绩表格外加学生选课信息等,像这类的表格通常显示的信息会 因人面异,因此使用 AbstractTableModel 会比较容易设计些。
JTable table = null;
DefaultTableModel defaultModel = null;pubLeabharlann ic AddRemoveCells()
{ JFrame f = new JFrame(); String[] name = {"字段 1","字段 2","字段 3","字段 4","字
panel.add(b); b.addActionListener(this); b = new JButton("删除行"); panel.add(b);
b.addActionListener(this); b = new JButton("删除列"); panel.add(b); b.addActionListener(this); Container contentPane = f.getContentPane(); contentPane.add(panel, BorderLayout.NORTH); contentPane.add(s, BorderLayout.CENTER); f.setTitle("AddRemoveCells"); f.pack(); f.setVisible(true); f.addWindowListener(new WindowAdapter() {
段 5"}; String[][] data = new String[5][5];
int value =1; for(int i=0; i<data.length; i++)
{ for(int j=0; j<data.length j++) data[j] = String.valueOf(value++);
} defaultModel = new DefaultTableModel(data,name);
table=new JTable(defaultModel); table.setPreferredScrollableViewportSize(new Dimension(400, 80));
JScrollPane s = new JScrollPane(table); JPanel panel = new JPanel(); JButton b = new JButton("增加行"); panel.add(b); b.addActionListener(this); b = new JButton("增加列");
public void windowClosing(WindowEvent e) { System.exit(0); } }); } /*要删除列必须使用 TableColumnModel 界 面 定 义 的 removeColumn()方 法。* 因此我闪先由 JTable 类的 getColumnModel()方法取*TableColumnModel 对象, 再由 TableColumnModel 的 getColumn() * 方法取得要删除列的 TableColumn.此 TableColumn 对象当作是*removeColumn() 的参数。删除此列完毕后必须重新设置列数,*也就是使用 DefaultTableModel 的 setColumnCount()方法来设置。 */ public void actionPerformed(ActionEvent e) { if(e.getActionCommand().equals("增加列")) defaultModel.addColumn("增加列"); if(e.getActionCommand().equals("增加行")) defaultModel.addRow(new Vector()); if(e.getActionCommand().equals("删除列")) { int columncount = defaultModel.getColumnCount()-1; if(columncount >= 0)//若 columncount<0 代表已经没有任何列了。 { TableColumnModel columnModel = table.getColumnModel(); TableColumn tableColumn = columnModel.getColumn(columncount); columnModel.removeColumn(tableColumn); defaultModel.setColumnCount(columncount);
} }
下面是DefaultTableModel 的构造函数: DefaultTableModel():建立一个 DefaultTableModel,里面没有任何数据. DefaultTableModel(int numRows,int numColumns):建立一个指定行列数的 DefaultTableModel. DefaultTableModel(Object[][] data,Object[] columnNames): 建 立 一 个 DefaultTableModel 输入数据格式为 Object Array.系统会自动调用 setDataVector()方法来设置数据。 DefaultTableModel(Object[] columnNames,int numRows):建立一个 DefaultTableModel,并具有 Column Header 名称与行数信息。 DefaultTableModel(Vector columnNames,int numRows): 建立一个 DefaultTableModel,并具有 column Header 名称与行数信息。 DefaultTableModel(Vector data,Vector columnNames): 建立一个 DefaultTableModel,输入数据格式为 Vector.系统会自动调用 setDataVector()方法来设置数据。 DefaultTableModel 类提供相当多好用的方法,如之前我们谈论过的 getColumnCount(),getRowCount(),getValueAt(),isCellEditable() setValueAt()等方法,均可直接使用。且 DefaultTableModel 也提供了 addColumn()与 addRow()等方法,可让我们随时增加表格的数据。 下面我们就举一个动态增加表格字段的例子: import java.awt.*; import java.awt.event.*; import java.util.Vector; import javax.swing.*; import javax.swing.event.*; import javax.swing.table.*; public class AddRemoveCells implements ActionListener {