Java Swing JTable 表格【15:组合列表框作为表格元素】
2016-01-14 21:47
741 查看
在实际开发中,很多表格中的单元格都是以组合框作为编辑器的,组合框能带来很大的灵活性
以下贴出实例代码:
package com.acconsys.swing.chapter14; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.DefaultCellEditor; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.AbstractTableModel; /** * 这段代码展示如何使用组合列表框作为表格中的元素 使得可以在列表框中选择所需要的数据,相当于输入不同数据 * * @author burns * */ public class Test17 { public Test17() { JFrame f = new JFrame(); /** * 由于MyTable类继承了AbstractTableModel * 并且实现了getColumnCount(),getRowCount()、getValueAt * ()方法,因此可以通过MyTable来禅城TableModel的实体 */ MyTable17 mt = new MyTable17(); // 利用MyTable来建立JTable JTable t = new JTable(mt); // 建立一个JComboBox的对象。 JComboBox c = new JComboBox(); // 在新建的JComboBox对象里新增三个项目 c.addItem("江西省九江市"); c.addItem("浙江省杭州市"); c.addItem("安徽省合肥市"); /** * 利用JTable所提供的getTableColumnModel()方法取得TableColumnModel对象 * 再由TableColumnModel类所提供的getColumn()方法取得TableColumn对象 * TableColumn类可针对表格中的每一行做具体的设置 例如设置字段的宽度,某行的标头,设置输入较复杂的数据类型等。 * 在这里利用TableColumn类所提供的setCellEditor()方法,将JComboBox作为第二行的默认编辑组件 */ t.getColumnModel().getColumn(1).setCellEditor(new DefaultCellEditor(c)); t.setPreferredScrollableViewportSize(new Dimension(550, 30)); JScrollPane s = new JScrollPane(t); f.getContentPane().add(s, BorderLayout.CENTER); f.setTitle("ColumnModelDd"); f.pack(); f.setVisible(true); f.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.exit(0); } }); } public static void main(String[] args) { new Test17(); } } // 继承表格抽象类的表格模型 class MyTable17 extends AbstractTableModel { private static final long serialVersionUID = 1L; Object[][] p = { { "王鹏", "江西省九江市", new Integer(66), new Integer(32), new Integer(98) }, { "宋兵", "浙江省杭州市", new Integer(85), new Integer(69), new Integer(154) }, }; String[] n = { "姓名", "居住地", "语文", "数学", "总分" }; @Override public int getRowCount() { return p.length; } @Override public int getColumnCount() { return n.length; } @Override public Object getValueAt(int row, int col) { return p[row][col]; } @Override public String getColumnName(int column) { return n[column]; } @Override public boolean isCellEditable(int rowIndex, int columnIndex) { return true; } @Override public void setValueAt(Object value, int rowIndex, int columnIndex) { p[rowIndex][columnIndex] = value; fireTableCellUpdated(rowIndex, columnIndex); } }
执行结果如下图:
除了组合框编辑器,这里贴上源代码,可以看到还有其他编辑器
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树