JTable以及JList资料

合集下载

java中jtable的用法

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. 渲染器渲染器用于将单元格中的值呈现为用户界面上的文本或图像。

JTable的入门详细介绍

JTable的入门详细介绍

类层次结构图:ng.Objectponent--java.awt.Container--javax.swing.JComponent--javax.swing.JTabel在使用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为输入来源的数据表格,可显示行的名称。

我们先以Array构造方式,说明如何利用JTable来建立一个简单的表格:import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.util.*;public class SimpleTable{public SimpleTable(){JFrame f=new JFrame();Object[][] playerInfo={{"阿呆",new Integer(66),new Integer(32),new Integer(98),new Boolean(false)}, {"阿呆",new Integer(82),new Integer(69),new Integer(128),new Boolean(true)}, };String[] Names={"姓名","语文","数学","总分","及格"};JTable table=new JTable(playerInfo,Names);table.setPreferredScrollableViewportSize(new Dimension(550,30));JScrollPane scrollPane=new JScrollPane(table);f.getContentPane().add(scrollPane,BorderLayout.CENTER);f.setTitle("Simple Table");f.pack();f.show();f.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {System.exit(0);}});}public static void main(String[] args){SimpleTable b=new SimpleTable();}}表格由两部份组成:分别是行标题(Column Header)与行对象(Column Object).利用JTable所提供的getTableHeader()方法取得行标题。

java jlist用法

java jlist用法

java jlist用法JList是Java swing提供的列表组件,可以显示一组有序的条目。

它常用于显示列表信息,并允许用户进行选择操作。

下面是JList的一些常见用法:- JList的创建:- 使用默认的构造函数:JList list = new JList();- 使用带有ListModel参数的构造函数:DefaultListModel<String> listModel = new DefaultListModel<>();listModel.addElement("Item 1");listModel.addElement("Item 2");listModel.addElement("Item 3");JList<String> list = new JList<>(listModel);- JList的设置:- 设置JList的数据模型,即ListModel:DefaultListModel<String> listModel = new DefaultListModel<>(); JList<String> list = new JList<>(listModel);- 设置JList的选择模式:- 单选模式:list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);- 多选模式:list.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);- JList的常见操作:- 添加一个项:listModel.addElement("New Item");- 删除选中的项:int selectedIndex = list.getSelectedIndex();if (selectedIndex != -1) {listModel.remove(selectedIndex);}- 获取选中的项:String selectedItem = list.getSelectedValue();- 获取所有选中的项:List<String> selectedItems = list.getSelectedValuesList();你可以根据实际需求,灵活运用JList的各种方法来实现复杂的列表功能。

跟我学Java Swing GUI组件技术及应用实例——JTable表格组件及应用实例

跟我学Java Swing GUI组件技术及应用实例——JTable表格组件及应用实例

1.1跟我学Java Swing GUI组件技术及应用实例——JTable表格组件及应用实例1.1.1表格控件JTable1、JTable表格控件的主要功能JTable顾名思义就是一个将数据以表格显示的组件,它提供以行和列的方式来显示数据,并且可以拖动列。

如下示图为应用JTable表格控件所创建出的数据表格。

JTable的数据选项不仅仅是可以显示字符串,还可以显示Checkbox选择框、下拉列表框或者图片等内容。

如下为Sun 公司的Swing 教程中的TableDialogEditoDemo 应用程序的执行结果示图,在该示例的数据表格中显示Checkbox选择框、下拉列表框和图片等内容。

2、JTable类的API功能说明(1)JTable类的API功能说明如下示图为JDK API文档中对JTable类的API功能说明的相关信息。

如果需要对数据表格中的表头数据列和数据单元格中的数据列进行定制,则需要通过继承封装表头数据列JTableHeader类或者继承封装数据列的TableColumn类。

如下为JTableHeader类和TableColumn类的功能说明。

(2)表头数据列JTableHeader类的功能说明(3)数据列TableColumn类的功能说明TableColumn 类封装表示JTable中数据列的所有属性,如宽度、大小可调整性、最小和最大宽度。

3、JTable表格控件中的数据可以以多种不同的方式被选中(1)选中某一数据行(2)选中连续的多行数据行(3)选中不连续的多行数据行4、JTable类的构造函数定义可以通过JTable(Object[][] rowData, Object[] columnNames)形式的构造方法创建出数据表格组件,该JTable组件将用来显示一个二维数组rowData 中的值(它是一个行数组),其列名称为columnNames所代表的数组。

JTable类的其它形式的构造函数定义如下:5、JTable 组件中的表示表格数据的数据结构(1)TableModel接口的功能定义由于Java Swing采用了MVC的设计,所以JTable不是用来存放数据的,它只是用来作为视图显示,而真正用来存储和维护数据的是TableModel这个接口的实现类。

java jtable用法

java jtable用法

java jtable用法JTable是Java Swing库中的一个组件,用于将数据以表格的形式展示出来。

JTable的用法如下:1.创建JTable对象:可以通过传入一个二维数组或者实现TableModel接口的数据模型来创建JTable对象。

2.设置表头:通过调用getTableHeader()方法获取表头对象,并设置表头的标题和样式。

3.设置表格数据:将数据设置到表格中,可以通过调用setModel()方法来设置TableModel,也可以通过调用setValueAt()方法逐个设置表格中的值。

4.设置表格样式:可以通过调用setDefaultRenderer()方法来设置单元格的渲染器,调用setDefaultEditor()方法来设置单元格的编辑器,以及调用setRowHeight()方法来设置行高等。

5.添加JTable到容器中:将JTable添加到容器中显示出来。

拓展:JTable还有一些其他常用的功能,例如:1.表格排序:可以通过调用setAutoCreateRowSorter()方法来开启表格排序功能,或者通过设置RowSorter来自定义排序规则。

2.表格选择:可以通过调用setSelectionMode()方法来设置表格的选择模式,可以选择单个单元格、单个行、多个行等。

3.表格事件:可以监听表格的事件,例如单元格的点击事件、单元格的编辑事件等,通过添加事件监听器来实现相应的逻辑处理。

4.表格导出:可以将表格中的数据导出为Excel、CSV等格式,通过调用相应的API来实现数据导出功能。

总之,JTable是一个非常强大的表格组件,可以用于展示和处理大量的数据,通过灵活的设置和拓展,可以实现各种复杂的表格功能。

一个详细的JTable使用例子

一个详细的JTable使用例子

最近需要使用JTable,第一次使用,很多不懂,到网上找了很多资料和例子,发现很多例子都没有完全的实现操作数据库里一张表的数据,摸了两天终于懂了一点,写了一个例子,把代码直接复制,修改一下数据库的连接就可以运行了.使用JTable操作数据库的一张表,实现增删改,显示表里所有的数据,点击''添加''按钮在表格插入一行填写数据保存到数据库,可一次插入多行,一次可选择任意多行进行删除,一次可以修改多行的值.有写得不好的地方希望大家指出,一起进步.共九个类:一:package product;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import javax.swing.table.AbstractTableModel;public class ProductTableModel extends AbstractTableModel {/*** 神恋科技:*//**changeList用来存放被修改过的数据值,这样做是为了一次修改多行多值, * 保存的对象是ChangedProduct,只记录被修改过的值.*/private static List changeList = new ArrayList();private List list = new ArrayList();private String[] column = { "Product_id", "Product Name","Product Description", "Status" };public ProductTableModel() {}public ProductTableModel(List list) {this();setList(list);}public int getColumnCount() {return column.length;}public int getRowCount() {return list.size();}/*** getValueAt方法就是使得数据在Table显示出来,给每个单元格设值*/public Object getValueAt(int arg0, int arg1) {ProductBean p = (ProductBean) list.get(arg0);return getPropertyValueByCol(p, arg1);}public void addRow(int index, ProductBean p) {if (index < 0 || index > list.size() - 1) {list.add(p);fireTableRowsInserted(list.size(), list.size());} else {list.add(index + 1, p);fireTableRowsInserted(index, index);}}public boolean deleteRow(int index) {if (index >= 0 && index < list.size()) {list.remove(index);fireTableRowsDeleted(index, index);return true;} elsereturn false;}public boolean saveRow(int index, ProductBean p) {if (index >= 0 && index < list.size()) {list.set(index, p);fireTableRowsUpdated(index, index);return true;} elsereturn false;}public ProductBean getRow(int index) {if (index >= 0 && index < list.size()) { return (ProductBean) list.get(index);} elsereturn null;}public List getNewRow(){List list=new ArrayList();List listProduct=getList();Iterator it=listProduct.iterator();while(it.hasNext()){ProductBean p=new ProductBean();p=(ProductBean)it.next();if(p.getProduct_id()==0){list.add(p);}}return list;}public List getList() {return list;}public void setList(List list) {this.list = list;fireTableDataChanged();}public String getColumnName(int i) {return column[i];}public void setColumn(String[] column) {this.column = column;}public Object getPropertyValueByCol(ProductBean p, int col) {switch (col) {case 0:return p.getProduct_id();case 1:return p.getProduct_name();case 2:return p.getProduct_desc();case 3:return p.getProduct_status();}return null;}public void setPropertyValueByCol(ProductBean p, String value, int col) {switch (col) {case 1:p.setProduct_name(value);break;case 2:p.setProduct_desc(value);break;case 3:p.setProduct_status(value);break;}fireTableDataChanged();}public boolean isCellEditable(int row, int column) {return true;}/*** setValueAt方法是使增加或修改值的时候生效,aValue就是你在单元格填的值,* 要把这些值保存到数据源中*/public void setValueAt(Object aValue, int rowIndex, int columnIndex) {ProductBean p = (ProductBean) list.get(rowIndex);setPropertyValueByCol(p, aValue.toString(), columnIndex);this.fireTableCellUpdated(rowIndex, columnIndex);}public static List getChangeList() {return changeList;}public static void setChangeList(List changeList) {ProductTableModel.changeList = changeList;}}二:package product;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Container;import java.awt.Dimension;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.table.DefaultTableColumnModel;public class ProductFrame extends JFrame {/*** 神恋科技:*/private JPanel panelTop = null;private JLabel labHeader = null;private JPanel panelBottom = null;private JButton add = null;private JButton delete = null;private JButton save = null;private JScrollPane scroll = null;private JTable table = null;private ProductTableModel model = null;private List listProduct = null;public ProductTableModel getModel() {if (null == model) {model = new ProductTableModel(listProduct);//给model添加一个监听,当修改的时候将触发该事件,代表事件的类是ChangeEventmodel.addTableModelListener(new ChangeEvent(model));return model;}return model;}public JLabel getLabHeader() {if (null == labHeader) {labHeader = new JLabel("Maintaince Product Information"); return labHeader;}return labHeader;}public JTable getTable() {if (null == table) {table = new JTable(getModel());table.setEnabled(true);table.setRowSelectionAllowed(true);table.setBackground(Color.YELLOW);/*** 隐藏第一列ID,不显示出来*/DefaultTableColumnModel dcm = (DefaultTableColumnModel)table.getColumnModel();dcm.getColumn(0).setMinWidth(0);dcm.getColumn(0).setMaxWidth(0);return table;}return table;}public JScrollPane getPanTable() {if (null == scroll) {scroll = new JScrollPane();scroll.setViewportView(getTable());return scroll;}return scroll;}if (null == panelTop) {panelTop = new JPanel();panelTop.setLayout(new FlowLayout(FlowLayout.CENTER));panelTop.add(getLabHeader());return panelTop;}return panelTop;}public JPanel getPanelBottom() {if (null == panelBottom) {panelBottom = new JPanel();panelBottom.setLayout(new FlowLayout(FlowLayout.CENTER)); panelBottom.add(getAdd());panelBottom.add(getDelete());panelBottom.add(getSave());return panelBottom;}return panelBottom;}public JButton getAdd() {/*** 点该按钮的时候调用addProduct()方法,在数据源(listProduct)将 * 增加一个元素,没设值前都是null.*/if (null == add) {add = new JButton("New");add.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {addProduct();}});return add;}return add;}if (null == delete) {delete = new JButton("Delete");delete.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {/*** 支持一次选中多行后删除*/int[] rows=getTable().getSelectedRows();if(rows.length>0){int flag=JOptionPane.showConfirmDialog(null, "确定删除?"); if(flag==JOptionPane.YES_OPTION)deleteProduct();}elseJOptionPane.showMessageDialog(null,"请选择要删除的行!"); }});return delete;}return delete;}public JButton getSave() {if (null == save) {save = new JButton("save");save.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {saveProduct();JOptionPane.showMessageDialog(null,"更新成功!");}});return save;}return save;}public void addProduct() {ProductBean p = new ProductBean();getModel().addRow(getTable().getSelectedRow(), p);}public void saveProduct() {DaoInterface dao=DaoFactory.getDao();List changeList=getModel().getChangeList();//如果有修改过就调用update方法if(changeList.size()>0){dao.update(changeList);changeList.clear();}List newRow=getModel().getNewRow();//如果是新增就调用saveList,支持一次增加多行if(newRow.size()>0){dao.saveList(newRow);getModel().setList(dao.getList());getTable().updateUI();newRow.clear();}}public void deleteProduct() {/**支持一次删除多行,先获得所有选中的行,然后按照行数取得Product实例,* 放进一个list,然后传给操作数据库的deleteList方法.*/int[] rows=getTable().getSelectedRows();ArrayList list=new ArrayList();DaoInterface dao=DaoFactory.getDao();for(int i=rows.length-1;i>=0;i--){list.add(getModel().getRow(rows[i]));getModel().deleteRow(rows[i]);}dao.deleteList(list);getTable().updateUI();list.clear();}public void initData() {/*** 初始化数据源,从数据库里把数据拿出来,然后它会调用* getValueAt方法来一个单元格一个单元格来设值,让它显示出来. */listProduct = new ArrayList();DaoInterface dao=DaoFactory.getDao();listProduct=dao.getList();this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}public ProductFrame() {initData();Container c = this.getContentPane();c.setLayout(new BorderLayout());c.add(getPanelTop(), BorderLayout.NORTH);c.add(getPanelBottom(), BorderLayout.SOUTH);c.add(getPanTable(), BorderLayout.CENTER);this.setSize(new Dimension(600, 400));this.setVisible(true);}public static void main(String[] args) {ProductFrame frame = new ProductFrame();frame.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {System.exit(0);}});}}三:package product;public class ProductBean {/*** 神恋科技:*/private int product_id;private String product_name;private String product_desc;private String product_status;public String getProduct_name() {return product_name;}public void setProduct_name(String product_name) {this.product_name = product_name;}public String getProduct_desc() {return product_desc;}public void setProduct_desc(String product_desc) {this.product_desc = product_desc;}public String getProduct_status() {return product_status;}public void setProduct_status(String product_status) { this.product_status = product_status;}public int getProduct_id() {return product_id;}public void setProduct_id(int product_id) {this.product_id = product_id;}}四:package product;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;public class JDBConnection {/*** 神恋科技:*/private static Connection conn;public static Connection getConn() {String driverName = "oracle.jdbc.driver.OracleDriver"; String url = "jdbc:oracle:thin:@192.168.0.66:1521:test"; String userName = "JACKTRAINING";String pwd = "JACKTRAINING";try {Class.forName(driverName);conn = DriverManager.getConnection(url, userName, pwd); } catch (ClassNotFoundException e) {System.out.println("装载驱动出错!");} catch (SQLException e) {System.out.println("获取数据库连接出错!");e.printStackTrace();}return conn;}}五:package product;import java.util.ArrayList;import java.util.List;public interface DaoInterface {/*** 神恋科技:*/public List getList();public void saveList(List list);public void deleteList(List list);public void update(List list);}六:package product;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import javax.swing.JOptionPane;public class DaoImpl implements DaoInterface {/*** 神恋科技:*/public List getList() {Connection conn = JDBConnection.getConn();String s1 = "select * from justin_jtable_product order by product_id asc";PreparedStatement ps = null;ResultSet rs = null;List list = new ArrayList();try {ps = conn.prepareStatement(s1);rs = ps.executeQuery();} catch (SQLException e) {System.out.println("取出全部数据出错!");JOptionPane.showMessageDialog(null, "取出全部数据出错!");e.printStackTrace();}try {while (rs.next()) {ProductBean p = new ProductBean();p.setProduct_id(rs.getInt(1));p.setProduct_name(rs.getString(2));p.setProduct_desc(rs.getString(3));p.setProduct_status(rs.getString(4));list.add(p);}} catch (SQLException e) {JOptionPane.showMessageDialog(null, "取出全部数据出错!");e.printStackTrace();} finally {try {rs.close();ps.close();conn.close();} catch (SQLException e) {JOptionPane.showMessageDialog(null, "关闭数据连接时出错!");e.printStackTrace();}}return list;}public void saveList(List list) {String s1 = "";Connection conn = JDBConnection.getConn();PreparedStatement ps = null;try {Iterator it = list.iterator();while (it.hasNext()) {ProductBean p = (ProductBean) it.next();String name = p.getProduct_name();String desc = p.getProduct_name();String status = p.getProduct_status();int id = p.getProduct_id();s1 = "insert into justin_jtable_product(product_name,"+ "product_desc,product_status) values(?,?,?)";ps = conn.prepareStatement(s1);ps.setString(1, name);ps.setString(2, desc);ps.setString(3, status);ps.executeUpdate();}} catch (SQLException e) {System.out.println("添加数据时出错!");JOptionPane.showMessageDialog(null, "添加数据时出错!");e.printStackTrace();} finally {try {ps.close();conn.close();} catch (SQLException e) {JOptionPane.showMessageDialog(null, "关闭数据连接时出错!");e.printStackTrace();}}}public void deleteList(List list) {String str = "delete from justin_jtable_product whereproduct_id=?";int id = 0;Iterator it = list.iterator();Connection conn = JDBConnection.getConn();PreparedStatement ps = null;try {while (it.hasNext()) {id = ((ProductBean) it.next()).getProduct_id();ps = conn.prepareStatement(str);ps.setInt(1, id);ps.executeUpdate();}} catch (SQLException e) {} finally {try {ps.close();conn.close();} catch (SQLException e) {JOptionPane.showMessageDialog(null, "关闭数据连接时出错!");e.printStackTrace();}}}public void update(List list) {Connection conn = JDBConnection.getConn();PreparedStatement ps = null;Iterator it = list.iterator();int id = 0;int col = 0;String value = "";String str = "";try {while (it.hasNext()) {ChangedProduct ch = (ChangedProduct) it.next();id = ch.getId();col = ch.getCol();value = ch.getValue();switch (col) {case 1:str = "update justin_jtable_product set product_name=? where product_id=?";break;case 2:str = "update justin_jtable_product set product_desc=? where product_id=?";break;case 3:str = "update justin_jtable_product set product_status=? where product_id=?";}ps = conn.prepareStatement(str);ps.setString(1, value);ps.setInt(2, id);ps.executeUpdate();}} catch (SQLException e) {JOptionPane.showMessageDialog(null, "修改数据时出错!");e.printStackTrace();} finally {try {ps.close();conn.close();} catch (SQLException e) {JOptionPane.showMessageDialog(null, "关闭数据连接时出错!");e.printStackTrace();}}}}七:package product;public class DaoFactory {/*** 神恋科技:*/synchronized public static DaoInterface getDao(){DaoInterface dao=null;if(dao==null){dao=new DaoImpl();return dao;return dao;}}八:package product;public class ChangedProduct {/*** 神恋科技: */private int id;private int col;private String value;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getValue() {return value;}public void setValue(String value) { this.value = value;}public int getCol() {return col;}public void setCol(int col) {this.col = col;}九:package product;import java.util.ArrayList;import java.util.List;import javax.swing.event.TableModelEvent;import javax.swing.event.TableModelListener;public class ChangeEvent implements TableModelListener {/*** 神恋科技:*//*** 监听table被改动的事件,只要目的是用来记录被修改过的值,* 这样做可以一次任意行的修改值,修改一个单元格的值就记录一次, * 主要记录id,新值,烈数.*/ProductTableModel model = null;public ChangeEvent(ProductTableModel model) {this.model = model;}List list = model.getChangeList();int id = 0;String value = "";public void tableChanged(TableModelEvent arg0) {int row = arg0.getFirstRow();int col = arg0.getColumn();if (col != -1) {ChangedProduct cp = new ChangedProduct();id = ((Integer) model.getValueAt(row, 0)).intValue();if (id != 0) {value = model.getValueAt(row, col).toString();cp.setId(id);cp.setCol(col);cp.setValue(value); list.add(cp);}}}}。

java jtable用法

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的一些常用用法和详细讲解。

JTable

JTable

Jtable 用来显示和编辑常规二维单元表。

Jtable有很多用来自定义其呈现和编辑的工具,同时提供了这些功能的默认值,从而可以设置简单表,例如要设置一个10行10列的表:TableModel dataModel = new AbstractTableModel() {public int getColumnCount() { return 10;}Public int getRowCount() {return 10;}public Object getValueAt(int row, int col) {return new Integer(row*col);} };Jtable table = new Jtable(dataModel);JscrollPane scrollpane = new JscrollPane(table);如果要在单独的试图中(在JscrollPane外)使用Jtable并显示其标题,可使用getTableHeader ()获取并单独显示它。

要启用行的排序和过滤,使用RowSorter。

可以通过以下两种方法之一设置一个行排序器。

1、直接设置RowSorter,例如:table.setRowSorter(new TableRowSorter(model));2、将autoCreateRowSorter属性设置为true,从而Jtable可用于创建RowSorter。

设计使用Jtable的应用程序时,需注意用来表示数据的数据结构。

DefaultTableModel是一个模型实现,它使用一个Vector来存储所有单元格的值,该Vector由包含多个Object的Vector 组成。

除了将数据从应用程序复制到DefaultTableModel中之外,还可以用TableModel接口的方式来包装数据,这样可将数据直接传递到Jtable。

在创建子类时使用AbstractTableModel 作为基类,在不需要创建子类时则使用DefaultTableModel。

JAVAWEb从入门到精通第二十一章01利用JTable类直接创建表格

JAVAWEb从入门到精通第二十一章01利用JTable类直接创建表格

操纵表格
在编写应用表格的程序时,经常需要获得表格的一些信息,如表格拥有的行数和 列数。下面是JTable类中三个经常用来获得表格信息的方法。 getRowCount():获得表格拥有的行数,返回值为int型。 getColumnCount ():获得表格拥有的列数,返回值为int型。 getColumnName(int column):获得位于指定索引位置的列的名称,返回值为 String型。
Thank youFra bibliotek定制表格
表格创建完成后,还需要对其进行一系列的定义,以便适合于具体的使用情况。 默认情况下通过双击表格中的单元格就可以对其进行编辑。
如果不需要提供该功能,可以通过重构JTable类的isCellEditable(int row, int column)方法实现。默认情况下该方法返回boolean型值true,表示指定单元格可 编辑,如果返回false则表示不可编辑。 如果表格只有几列,通常不需要表格列的可重新排列功能。在创建不支持滚动条 的表格时已经使用了JTableHeader 类的对象,通过该类的 setReorderingAllowed(boolean reorderingAllowed)方法即可设置表格是否支持重 新排列功能,设为false表示不支持重新排列功能。
利用JTable类直接创建表格
本讲大纲: 1、创建表格 2、定制表格 3、操纵表格
创建表格
在JTable类中除了默认的构造方法外,还提供了如下利用指定表格列名数组和表 格数据数组创建表格的构造方法。 JTable(Object[][] rowData, Object[] columnNames)
rowData:封装表格数据的数组 columnNames:封装表格列名的数组 在使用表格时,通常将其添加到滚动面板中,然后将滚动面板添加到相应的位置。

java swing组件用法

java swing组件用法

java swing组件用法Java Swing 是一个用于创建图形用户界面(GUI)的 Java 库。

Swing 组件可用于创建窗口、按钮、文本框等 GUI 元素。

以下是一些常用的 Java Swing 组件用法:1. JFrame:用于创建窗口。

例如:```javaJFrame frame = new JFrame("My Window");(400, 300);(_ON_CLOSE);(true);```2. JButton:用于创建按钮。

例如:```javaJButton button = new JButton("Click me");(new ActionListener() {public void actionPerformed(ActionEvent e) { // 按钮点击事件处理代码}});```3. JTextField:用于创建文本框。

例如:```javaJTextField textField = new JTextField();(new ActionListener() {public void actionPerformed(ActionEvent e) { // 文本框内容改变事件处理代码}});```4. JLabel:用于创建标签。

例如:```javaJLabel label = new JLabel("Hello, world!");5. JList:用于创建列表框。

例如:```javaDefaultListModel<String> model = new DefaultListModel<>(); ("Item 1");("Item 2");("Item 3");JList<String> list = new JList<>(model);```6. JTable:用于创建表格。

Java中的JTable笔记

Java中的JTable笔记

JTable用来创建表格表格通常需要显示在滚动面板中,否则表格不会显示列标题。

构造方法:1)JTable():创建一个默认的构造方法,无初始化数据2)JTable(Object [ ] [ ] rowData,Object [ ] columnNames):以二维数组rowData中的元素作为单元格中显示的数据,以一维数组columnNames中的元素值作为列名创建一个表格例:JTable table = new JTable(new String[][]{{"1","张飞","110"},{"2","刘备","112"},{"3","华佗","114"},{"4","关羽","119"}},new String[]{"学号","姓名","电话"});JScrollPane jsp= new JScrollPane(table,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDE D,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);添加到滚动面板的语句也可以这样写,这样滚动条不设置有默认AS_NEEDEDJScrollPane jsp = new JScrollPane();jsp.setViewportView(table);3)JTable(TableModel model):使用表格模型model创建一个表格TableModel 是javax.swing .table中的一个接口,这个包中的DefaultTableModel 实现了这个接口public static void main(String[] args) {GUI0807JTable table = new GUI0807JTable();String[] columnNames = {"编号","课程名称","课程类别","学分","课时"};String[][] rowData = {{"001","语文","必修","6","50"},{"002","政治","必修","5","30"},{"003","英语","选修","3","35"},{"004","计算机","必修","8","60"},};DefaultTableModel model = new DefaultTableModel(rowData, columnNames);JTable jTable = new JTable(model);JScrollPane jsp = new JScrollPane();jsp.setViewportView(jTable);table.add(jsp);table.setBounds(300, 150, 300, 300);table.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);table.setVisible(true);}运行结果:4)JTable(Vector dataVector,Vector columnVector):以向量Vector中的元素值作为单元格中数据以向量columnVector中的元素值作为列名创建一个表格Vector<String> columnVector = new Vector<String>();columnVector.add("年");columnVector.add("月");columnVector.add("日");Vector<Vector<String>> dataVector = new Vector<Vector<String>>();for(int i=1;i<=5;i++){Vector<String> rowVector = new Vector<String>();rowVector.add("2010");rowVector.add("5");rowVector.add(String.valueOf(i));dataVector.add(rowVector);}JTable jTable = new JTable(dataVector, columnVector);运行结果:常用方法:getModel()获得表格所显示数据的表格模式getRowCount()获得表格中所显示的数据的行数getSelectedColumn()获得表格中第一选择列的索引,如果没有被选择的列,返回-1getSelectedRow()获得表格中第一选择行的索引,如果没有被选择的行,返回-1getValueAt()获得由指定行索引row和列索引column指定单元格的值setAutoResizeModel()设置表格的自动调整模式setSelectionModel()设置表格的选择模式注意:1、表格的行和列索引都是从0开始的2、表格的自动调整模式默认开启,调整窗体大小表格自动按比例调整所有列的宽度JTable例子:public class GUI0807JTable3 extends JFrame {JTextField jtfA, jtfB;public GUI0807JTable3() {String[] columnNames = { "编号", "课程名称", "课程类别", "学分", "课时" };String[][] rowData = { { "001", "语文", "必修", "6", "50" },{ "002", "政治", "必修", "5", "30" },{ "003", "英语", "选修", "3", "35" },{ "004", "计算机", "必修", "8", "60" }, };final DefaultTableModel model = new DefaultTableModel(rowData,columnNames);final JTable jTable = new JTable(model);JScrollPane jsp = new JScrollPane();jsp.setViewportView(jTable);// 设置表格的排序器jTable.setRowSorter(newTableRowSorter<DefaultTableModel>(model));// 设置表格的选择模式为单选jTable.setSelectionMode(ListSelectionModel.SINGLE_S ELECTION);// 为表格添加鼠标事件监听器jTable.addMouseListener(new MouseAdapter() {// 发生了单击事件public void mouseClicked(MouseEvent e) {// 获得被选中行的索引int selectedRow = jTable.getSelectedRow(); //这里提示前面局部jTable必许加final修饰,否则出错// 从表格模型中获得指定值Object oa = model.getValueAt(selectedRow, 0);// 这里model一样,定义到类里就不需要了。

Java的Jtable、从数据库取数据显示在表格中

Java的Jtable、从数据库取数据显示在表格中

数据库操作代码:// Load JDBC driverClass.forName("sun.jdbc.odbc.JdbcOdbcDriver");String dbUrl = "jdbc:odbc:driver={Microsoft Access Driver ( *.mdb)};DBQ=access\\test.mdb";Connection con = DriverManager.getConnection(dbUrl, "","");Statement state = con.createStatemen(ResultSet.TYPE_SCROLL_SEN SITIVE,ResultSet.CONCUR_UPDATABLE);// 执行SQL语句String sql = "select * from score";ResultSet rs = state.executeQuery(sql);displayResultSet(rs);rs.close();state.close();con.close();将数据显示在表格中:private void displayResultSet(ResultSet rs) throws SQLEx ception {boolean moreRecords = rs.next(); // 定位到达第一条记录if(!moreRecords) {JOptionPane.showMessageDialog(null, "结果集中无记录", "无记录",RMATION_MESSA GE);return;}Vector rows = new Vector();Vector columnHeads = new Vector();try{ResultSetMetaData rsmd = rs.getMetaData(); // 获得rs结果集中列属性信息for(int i = 1; i <= rsmd.getColumnCou nt(); ++i)columnHeads.addElement(rsmd.getColumn Name(i)); // 获得列名(将列名存放至向量columnHeads)do{rows.addElement(getNextRow(rs, rsmd) );}while(rs.next()); // 利用循环获得所有记录jTable = new JTable(rows, columnHeads); // 将获得的行列数据信息作为参数重新构造表格视图jTable.setSize(new Dimension(383, 81));JScrollPane scroller = new JScrollPane(jT able);// 创建带有滚动条的面板,并将表格视图加入Container c = getContentPane(); // 获取溶器// c.remove(2); //// 从溶器中移除指定控件(本窗体中有二级面板有两个,第一个存放文本域及按钮,第二个存放表格视图,故移除1)c.add(scroller, BorderLayout.CENTER); // 将面板重新加入溶器中c.validate(); // 验证此容器及其所有子组件} catch(SQLException e) {e.printStackTrace();}}private Vector getNextRow(ResultSet rs, ResultSetMetaData rsmd)throws SQLException {Vector currentRow = new Vector(); // 定义一个向量,用于存放记录for(int i = 1; i <= rsmd.getColumnCount(); + +i)currentRow.addElement(rs.getString(i)); // 获取记录return currentRow; // 返回记录}以上代码实现连接access并将取出数据显示在JTable控件上……选择JTable行:jTable.getSelectedRow() != -1用于判断是否有选中行(jTable.getModel().getValueAt(jTable .getSelectedRow(),0)).toString();用于取出选择行的某单元值(0表示该行的第一列以此类推)if (jTable.getSelectedRow() != -1) {String ID =(jTable.getModel().getValueAt(jTable .getSelectedRow(),0)).toString();//这里可以执行数据库操作}。

JTable的使用简单的例子

JTable的使用简单的例子

1.JTable与TableModel (2)1.TableModel与JTable的关系: (2)2.TableModel实践: (3)3.使用JTable+TableModel展示java中的数据对象: (5)2.JTable展示方式的美化: (8)1.设置表格的宽度和高度: (8)2.要显示表头: (8)3.新加列,将列设为下拉框: (9)4.表格排序: (9)3. JTable事件响应和项目设想 (9)1.JTable与TableModel1.TableModel与JTable的关系:前面,我们己学会在界面上加入一个简单的JTable对象:JTable table=new JTable(3,5);这段代码即可创建一个三行五列的表格用以显示在界面上;在具体的应用中,我们肯定是要让JTable显示我们自己定义的数据,比如将上例中的UserInfo对象或UserBlog对象显示到表格中,那就必须定制JTable对象所要使用的javax.swing.table.TableModel对象,在开始前,我们先理解javax.swing.table.TableModel 和JTable之间的关系:模特与衣服之间的关系:JTable对象TableModel对象简单的说,JTable只是一个界面,主要负责显示功能,但JTable对象具体显示多少行多少列,甚示每行每列中显示什么类型的数据,JTable中的单元格是否可编辑,编辑之后怎么办…关于数据提供和数据操作的实现,都是由这个JTable对象的TableModel对象所负责的;反向而言,当JTable对象界面的数据被改动时,JTable会自动调用自己模型中的方法将改动反映到模型中。

说了这么多,我们来看TableModel到底是什么东东----它是一个接口定义,源码说明如下://通过调用JTable对象的setModel方法,传入实现了TableModel接口类的对象public interface TableModel{public int getRowCount();//决定表格上显示多少行public int getColumnCount();//表格上显示多少列//得到某一列的列名,columnIndex:列的序号,从0开始public String getColumnName(int columnIndex);//得到某一列的数据类型,columnIndex:列的序号,从0开始public Class<?> getColumnClass(int columnIndex);//某一单元格在界面上是否可直接编辑,rowIndex:行号,columnIndex:列号,从0开始public boolean isCellEditable(int rowIndex, int columnIndex);//具体的JTable在显示时,调用这个方法取得每一个一单元格的值public Object getValueAt(int rowIndex, int columnIndex);//如果表格可编辑,表格对象将调用这个方法将改变后的值反映到它的model对象中//aValue代表修改后的值,rowIndex,columnIndex表示所在的行列索引。

Jlist用法

Jlist用法

1、 Java中Jlist这个Swing组件是用来展示一组项目,供用户选择的。

如下图所示:可以将要展示的项目放在一个列上,也可以展示在多一个列中。

有时候要展示的项目太多,组件的尺寸又不能随意扩大,所以,该组件常常是放在Scroll pane容器中的。

2、初始化一个Jlist组件:下面是定义一个Jlist组件,并将它放在JscrollPane容器中的简单代码:JScrollPane scrollPane = new JScrollPane();scrollPane.setBounds(65, 65, 122, 144);String listItem[] = {"苹果","香蕉","橘子","核桃"};Jlist list = new JList(listItem);scrollPane.setViewportView(list);初始化一个Jlist组件时有三种方式,第一种就是上面这个例子:给构造函数传入一个数组型的参数。

它的原型是:public JList另一种是调用方法:setModel来单独设置。

如下示例代码:DefaultListModel listModel = new DefaultListModel();listModel.addElement("Debbie Scott");listModel.addElement("Scott Hommel");listModel.addElement("Alan Sommerer");Jlist list = new JList(listModel);这时,可以通过调用数据模型的下列方法来随时改变组件中所显示的项目(当然,这些方法都属于ListModel的方法):public void add(int index, Object element);//在指定位置插入项目public void addElement(Object obj);//在最后面插入项目public boolean removeElement(Object obj);//删除最先匹配的项目public Object remove(int index);//删除指定位置的项目public Object get(int index);//获得指定位置的项目public Object set(int index, Object element);//修改指定位置的项目3、设置选择模式Jlist组件有三种选择项目的模式:第一种是:SINGLE_SELECTION:显然,这种模式下每次只允许选择一个项目。

Java学习——68、列表框JList

Java学习——68、列表框JList

Java学习——68、列表框JList之前介绍的单选按钮,复选框一般用在数据项比较少的情况下。

如果可供选择的数据项较多,通常用列表框或组合框,本篇介绍列表框。

1、 JList列表框列表框可以显示一组数据项,从中可选择一个或多个。

其类名JList,声明如下:public class JList extends JComponent implements Scrollable, Accessible//列表框类{public JList(T items[]) //由对象数组提供数据项public JList(ListModel listmodel) //指定列表框模型public void setSelectedIndex(int i) //选中第i(≥0)项public int getSelectedIndex()//返回首个选中项序号public T getSelectedValue()//返回首个选中项对象public void addListSelectionListener(ListSelectionListenerl)//注册列表框选择事件监听器}2、列表框模型列表框里的数据项由列表框模型存储并管理,类名为ListModel,声明如下:public class DefaultListModel extends AbstractListModel{public DefaultListModel()public int getSize()//返回列表框的数据项数public T getElementAt(int i) //返回序号为i的组件public void setElementAt(T item, int i) //设置序号为i的组件为itempublic int indexOf(Object item) //返回item首次出现位置public void insertElementAt(T item, int i) //在i处插入item数据项public void addElement(T item) //添加item数据项public void removeElementAt(int i) //删除序号为i的数据项public boolean removeElement(T item) //删除首次出现的item 项public void removeAllElements()//删除所有数据项}3、列表框选择事件选中列表框中的数据项,将触发列表框选择事件ListSelectionEvent,其监听器接口名为:ListSelectionListener。

关于JTable用法的整理

关于JTable用法的整理

关于JTable用法的整理Swing颇受欢迎的JTable类为显示大块数据提供了一种简单的机制。

用户能够更改JTable的布局、拖放它的栏,或者通过拖动标题的分隔线来改变其大小。

这些列被保存在一个String数组里:String[] columnNames = {"Product","Number of Boxes","Price"};数据被初始化并保存在一个二维的对象数组里:Object[][] data ={{"Apples", new Integer(5),"5.00"},{"Oranges", new Integer(3),"6.00"},{"Pears", new Integer(2),"4.00"},{"Grapes", new Integer(3),"2.00"},};JTable是使用data和columnNames构成的:JTable table = new JTable(data, columnNames);查看JTableJTable的高度和宽度按照下面的方法来设定:table.setPreferredScrollableViewportSize(new Dimension(300, 80));如果JTable的一个列或者JTable窗口自身的大小被重新确定,那么其他列会被相应的缩小或者放大,以适应新的窗口。

使用setAutoResizeMode()方法就能够控制这种行为:table.setAutoResizeMode(int mode);mode整数字段可能的值有:AUTO_RESIZE_OFFAUTO_RESIZE_NEXT_COLUMNAUTO_RESIZE_SUBSEQUENT_COLUMNSAUTO_RESIZE_LAST_COLUMNAUTO_RESIZE_ALL_COLUMNS表格的缺省值单元格内方格坐标线的缺省颜色是Color.gray。

(swing读书笔记)JTable简介(下)

(swing读书笔记)JTable简介(下)

(swing读书笔记)JTable简介(下)
(swing读书笔记)JTable简介(下)
by cszhao1980
六.Row
最初,JTable没有提供任何“Row”相关的类来控制Row,与Row相关的大量操作直接坐落在JTable和TableModel中。

后来,Swing提供了TableRowSorter来协助Row排序,其继承关系如下:
JAVA help中对RowSorter的描述如下:
七.JTable事件
首先是三种模型事件:
(1)TableModelEvent;
单元值变化、单元被更新、表格结构变化、行被插入、删除、更新。

(2)TableColumnModelEvent;
列被插入、删除、移动,列边距发生变化,列选取发生变化
(3) ListSelectionEvent;
行选取发生变化
另外,“~CellEditor”的编辑停止、取消时,会激发ChangeEvent。

JTable不提供任何添加监听器的方法,这些监听器必须添加在模型或者CellEditor上。

jtable用法

jtable用法

JTable是JavaSwing库的一部分,用于创建包含数据行和列的表。

它通常用于显示来自数据库或其他数据源的数据。

要使用JTable,首先需要创建一个表模型,该模型将为表提供数据。

这可以通过扩展AbstractTableModel类并实现其方法来实现。

一旦有了表模型,就可以创建JTable对象并使用setModel()方法设置模型。

然后,您可以将表添加到容器(例如JScrollPane)并在屏幕上显示它。

下面是一个使用数据创建简单表的示例:
1.String[] columnNames = {"Name", "Age", "Gender"};
2.Object[][] data = {
3. {"John", 30, "Male"},
4. {"Sara", 25, "Female"},
5. {"Mike", 35, "Male"}
6.};
7.
8.DefaultTableModel model = new DefaultTableModel(data, colum
nNames);
9.JTable table = new JTable(model);
10.J ScrollPane scrollPane = new JScrollPane(table);
11.f rame.add(scrollPane, BorderLayout.CENTER);
您可以使用许多其他属性(如列宽、行高等)自定义JTable。

利用JTable创建学生信息表

利用JTable创建学生信息表

JTable
Swing中功能 最强大的单一 组件 发挥其全部潜 能的最富挑战 性的组件之一 支持许多复杂 的定制 位于 javax.swing 包中
四、预备知识
显示JTable中数据的基本步骤
(1) 创建所显示的数据的一个数组。 (2) 创建列标题的一个数组。
(3) 创建JTable的一个实例(对象),指定数据和标题。
将一列添加到表格模型中 void addColumn(Object columnName) 参数columnName表示要添加的列的标识符,它可以
为null
addRow()方法:
添加一行到表格模型的结尾; void addRow(Vector rowData) 参数rowData表示要添加的行数据(可选),如果未指
void setPreferredScrollableViewportSize(Dimension
dim) 其中,dim指定滚动区域的大小
DefaultTableModel类
它继承自AbstractTableModel抽象类而来。 DefaultTableModel的常用构造方法为:
调整表格列宽
使用JTable的setAutoResizeMode()方法:
void setAutoResizeMode(int mode) 其中参数mode必须是以下5个之一: AUTO_RESIZE_SUBSEQUENT_COLUMENS:表示当调整 某一列宽时,此字段之后的所有字段列宽都会跟着一起变动。 此为系统默认值。 AUTO_RESIZE_ALL_COLUMNS:表示当调整某一列宽时, 此表格上所有字段的列宽都会跟着一起变动。 AUTO_RESIZE_OFF:表示当调整某一列宽时,此表格上所 有字段列宽都不会跟着改变。 AUTO_RESIZE_NEXT_COLUMN:表示当调整某一列宽时, 此字段的下一个字段的列宽会跟着改变,其余均不会变。 AUTO_RESIZE_LAST_COLUMN:表示当调整某一列宽时, 最后一个字段的列宽会跟着改变,其余均不会改变。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、JTable的使用:建议使用如下方式创建JTable对象JTable(Vector rowData,Vector columnNames):建立一个以Vector为输入来源的数据表格,可显示行的名称。

详见精通Swing设计帮助文档2、JList的使用:类层次结构图:ng.Objectponent--java.awt.Container--javax.swing.JComponent--javax.swing.JListJList与JCheckBox有点相似,都可以让你选择一到多个选项,较不同的是,JList的选项方式是整列选取。

我们先来看看JList所提供的构造函数,方便迅速建立JList对象,如下所示:JList构造函数:JList():建立一个新的JList组件。

JList(ListModel dataModel):利用ListModel建立一个新的JList组件.JList(Object[] listData):利用Array对象建立一个新的JList组件。

JList(Vector listData):利用Vector对象建立一个新的JList组件。

7-3-1:建立一般的JList:一般我们若不需要在JList中加入Icon图像,通常会用第3或第4个构造函数建立JList对象。

而这两个最大的不同在于使用Array对象建立JList组件就无法改变项目的数量。

对于项目数量经常改变的环境来说,以Vector对象来建立JList组件当然比较适合。

例如一个卖手机的店家,可能动不动就会有新手机上市,此时若用Array对象就不是很适当了!我们来看个范例看怎么构造一个简单的JList吧!import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.util.Vector;public class JList1{public static void main(String args[]){JFrame f = new JFrame("JList");Container contentPane = f.getContentPane();contentPane.setLayout(new GridLayout(1,2));String[] s = {"美国","日本","大陆","英国","法国"};Vector v = new Vector();v.addElement("Nokia 8850");v.addElement("Nokia 8250");v.addElement("Motorola V8088");v.addElement("Motorola V3688x");v.addElement("Panasonic GD92");v.addElement("其他");JList list1 = new JList(s);list1.setBorder(BorderFactory.createTitledBorder("您最喜欢到哪个国家玩呢?"));JList list2 = new JList(v);list2.setBorder(BorderFactory.createTitledBorder("您最喜欢哪一种手机?"));contentPane.add(new JScrollPane(list1));contentPane.add(new JScrollPane(list2));f.pack();f.show();f.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {System.exit(0);}});}}在这个范例中,当窗口变小时,JList并不会有滚动(ScrollBar)的效果,所以可能无法看到比较下面的选项。

若我们要有滚动的效果,必须将JList放入滚动面版中(JScrollPane),如我们在程序改为: contentPane.add(new JScrollPane(list1));contentPane.add(new JScrollPane(list2));如此就有滚动的效果了,若我们要有多个选项呢?在JList中有3种选择模式(Selection Mode)可供我们使用,分别是单一选择、连续区间选择、与多重选择。

我们可以在ListSelectionModel这个interface 中找到这3个常数值,如下:static int SINGLE_SELECTION:一次只能选择一个项目。

static int SINGLE_INTERVAL_SELECTION:按住[shift]键,可以对某一边续的项目作选取。

static int MULTIPLE_INTERVAL_SELECTION:没有任何限制。

可作单一选择,连续区间选择,或对不连续的项目作多重选择(按住[Ctrl]键)。

多得选择是java对JList的默认值,因此在上例中你可以在JList 中作这3种模式的选择方式。

设置选择模式可以利用JList所提供的setSelectionMode(int selectionMode)方法。

例如,若我们将上例改成如下:import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.util.Vector;public class JList2{public static void main(String args[]){JFrame f = new JFrame("JList");Container contentPane = f.getContentPane();contentPane.setLayout(new GridLayout(1,3));String[] s1 = {"美国","日本","大陆","英国","法国","意大利","澳洲","韩国"};String[] s2 = {"范志毅","符兵","周宁","杨晨","高锋","南方","其他"};Vector v = new Vector();v.addElement("Nokia 3310");v.addElement("Nokia 8850");v.addElement("Nokia 8250");v.addElement("Motorola V8088");v.addElement("Motorola V3688x");v.addElement("Panasonic GD92");v.addElement("Panasonic GD93");v.addElement("NEC DB2100");v.addElement("Alcatel OT500");v.addElement("Philips Xenium 9@9 ");v.addElement("Ericsson T29sc");v.addElement("其他");JList list1 = new JList(s1);list1.setBorder(BorderFactory.createTitledBorder("您最喜欢到哪个国家玩呢?"));JList list2 = new JList(s2);list2.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);list2.setBorder(BorderFactory.createTitledBorder("您最喜欢哪个运动员呢?"));JList list3 = new JList(v);list3.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTIO N);list3.setBorder(BorderFactory.createTitledBorder("您最喜欢哪一种手机?"));contentPane.add(new JScrollPane(list1));contentPane.add(new JScrollPane(list2));contentPane.add(new JScrollPane(list3));f.pack();f.show();f.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {System.exit(0);}});}}。

相关文档
最新文档