- 浏览: 735561 次
- 性别:
- 来自: 广州
-
文章分类
最新评论
-
lingsuch:
Android网络连接判断与处理 -
月光照着我:
写的不错,作为笔记了
Android中LayoutInflater的使用 -
智博王锋:
好文章是要顶的!
Android中LayoutInflater的使用 -
云南白药:
...
Android中LayoutInflater的使用 -
万新one:
理解了许多。解释的不错。3Q.
Android中LayoutInflater的使用
import javax.swing.*; import javax.swing.table.*; import java.awt.*; import java.awt.event.*; final public class TableDemo extends JFrame { private static final long serialVersionUID = 1L; private JButton increaseHeightButton, reduceHeightButton, addRowButton, deleteRowButton; private LineNumberTablePane tablePane; private JTable primaryTable = new JTable(), numberTable = new JTable(); public TableDemo() throws HeadlessException { super("line number table"); initButton(); // buildPrimaryTable(); tablePane = new LineNumberTablePane(primaryTable, numberTable); buildPrimaryTable(); doLay(); // tablePane.refershRowHeader(); } private void buildPrimaryTable() { String[][] datas = new String[][] { { "老张", "28", "56.2" }, { "小杨", "30", "56.2" }, { "大李", "33", "56.2" }, { "胖刘", "35", "156.2" } }; String[] columnNames = new String[] { "姓名", "年龄", "体重" }; primaryTable.setModel(new DefaultTableModel(datas, columnNames)); tablePane.notifyRowsChanged(); } private void initButton() { increaseHeightButton = new JButton("increase row height"); increaseHeightButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int old = primaryTable.getRowHeight(); primaryTable.setRowHeight(old + 5); } }); reduceHeightButton = new JButton("reduce row height"); reduceHeightButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int old = primaryTable.getRowHeight(); primaryTable.setRowHeight(old - 5); } }); addRowButton = new JButton("add row"); addRowButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { DefaultTableModel dm = (DefaultTableModel) primaryTable .getModel(); String[] insertedRowData = new String[] { "无名氏", "X", "Y" }; dm.insertRow(0, insertedRowData); tablePane.notifyRowsChanged(); tablePane.scrollRowToVisible(10); } }); deleteRowButton = new JButton("delete Row"); deleteRowButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { DefaultTableModel dm = (DefaultTableModel) primaryTable .getModel(); dm.removeRow(0); tablePane.notifyRowsChanged(); tablePane.scrollRowToVisible(10); } }); } private void doLay() { Container container = getContentPane(); JPanel buttonsPane = new JPanel(new FlowLayout(FlowLayout.LEFT, 0, 0)); buttonsPane.add(increaseHeightButton); buttonsPane.add(reduceHeightButton); buttonsPane.add(addRowButton); buttonsPane.add(deleteRowButton); container.add(buttonsPane, BorderLayout.NORTH); container.add(tablePane, BorderLayout.CENTER); setSize(470, 200); setVisible(true); } public static void main(String[] args) { new TableDemo(); } }
import javax.swing.*; import javax.swing.table.*; import java.awt.*; import java.beans.*; //为Table添加行号 final public class LineNumberTablePane extends JScrollPane { private static final long serialVersionUID = 1L; private JTable primaryTable = new JTable(); private JTable numberTable = new JTable(); private static final int DEFAULT_MIN_ROW_HEADER_WIDTH = 30; private static final String ROW_HEADER_IDENTIFIER = "lineNumberColumn"; private static final String ROW_HEADER_COLUMN_NAME = "lineNumberRowColumn"; private static final String ROW_HEADER_VALUE = "行号"; private TableColumn rowHeaderColumn = new TableColumn(0); private DefaultTableModel rowHeaderTableModel = new NumberTableModel(); public LineNumberTablePane(final JTable primaryTableComponent, final JTable numberTableComponent) { super(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); primaryTable = primaryTableComponent; numberTable = numberTableComponent; numberTable.setModel(rowHeaderTableModel); numberTable.setColumnModel(new NumberTableColumnModel()); checkPropertyListeners(); notifyRowsChanged(); } public void notifyRowsChanged() { while (rowHeaderTableModel.getRowCount() > 0) rowHeaderTableModel.removeRow(0); for (int i = 0, j = primaryTable.getRowCount(); i < j; i++) { rowHeaderTableModel.addRow(new Integer[] { i + 1 }); } adjustRowHeaderHeight(); } private void adjustRowHeaderHeight() { setViewportView(primaryTable); setRowHeaderView(numberTable); int h = this.getVerticalScrollBar().getSize().height; getRowHeader().setPreferredSize( new Dimension(DEFAULT_MIN_ROW_HEADER_WIDTH, h)); } private void checkPropertyListeners() { primaryTable.addPropertyChangeListener(new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent evt) { if (evt.getPropertyName().equals("rowHeight")) { Integer h = (Integer) evt.getNewValue(); numberTable.setRowHeight(h); adjustRowHeaderHeight(); } } }); } public void scrollRowToVisible(int row) { int rowMargin = primaryTable.getRowMargin(); int y = 0, w = 0; for (int i = 0; i < row; i++) y += primaryTable.getRowHeight(i) + rowMargin; TableColumnModel columnModel = primaryTable.getColumnModel(); for (int i = 0, j = columnModel.getColumnCount(); i < j; i++) w += columnModel.getColumn(i).getWidth(); primaryTable.scrollRectToVisible(new Rectangle(0, y, w, primaryTable .getRowHeight(row))); } public JTable getPrimaryTable() { return primaryTable; } public JTable getRowHeaderTable() { return numberTable; } private class NumberTableModel extends DefaultTableModel { private static final long serialVersionUID = 1L; public int getColumnCount() { return 1; } public boolean isCellEditable(int rowIndex, int columnIndex) { return false; } public Object getValueAt(int rowIndex, int columnIndex) { return columnIndex == 0 ? rowIndex + 1 : null; } public String getColumnName(int column) { return column == 0 ? ROW_HEADER_COLUMN_NAME : ""; } public Class<?> getColumnClass(int columnIndex) { return columnIndex == 0 ? Integer.class : null; } } private class NumberTableColumnModel extends DefaultTableColumnModel { private static final long serialVersionUID = 1L; private NumberTableColumnModel() { rowHeaderColumn.setIdentifier(ROW_HEADER_IDENTIFIER); rowHeaderColumn.setHeaderValue(ROW_HEADER_VALUE); TableCellRenderer renderer = new RowHeaderCellRenderer(); rowHeaderColumn.setCellRenderer(renderer); rowHeaderColumn.setHeaderRenderer(renderer); addColumn(rowHeaderColumn); } public int getColumnCount() { return 1; } } private class RowHeaderCellRenderer implements TableCellRenderer { public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { JLabel label = new JLabel() { private static final long serialVersionUID = 1L; public Insets getInsets() { return new Insets(0, 0, 0, 0); } }; label.setHorizontalAlignment(SwingConstants.RIGHT); if (column == 0) { label.setText(value.toString()); label.setOpaque(true); label.setBackground(Color.BLACK); label.setForeground(Color.YELLOW); } return label; } } }
发表评论
-
Swing中引入Android的NinePatch技术,让Swing拥有Android的外观定制能力
2012-09-21 09:22 1639【摘要】 本文诣在 ... -
JavaSwing实现支持合并拆分的JTable
2010-12-16 15:39 1991GridBagModel:抽象模型接口。该接口用于描述表格中单 ... -
JTable小例子,表格中使用JComboBox下拉按钮
2010-12-16 15:21 5439import java.awt.BorderLayout; ... -
配合滚动面板实现JTable上下翻页的效果
2010-12-16 14:26 3441import java.awt.BorderLayout; ... -
JScrollBar简单演示例子
2010-12-06 19:28 6639import java.awt.*; import java ... -
点击jtable的表头,数据会根据根据表头来排序
2010-12-06 11:47 5156import javax.swing.JFrame; imp ... -
重写JSplitPane的BasicSplitPaneUI
2010-09-18 13:39 1596import java.awt.Color; import ... -
Swing窗口初始最大化的方法
2010-08-20 11:09 79511.设置窗口最大(伪最大化) JFrame frame =n ... -
Tree目录实现拖拽功能演示实例(DragAndDrop)
2010-08-10 16:49 1812import java.awt.BorderLayout; ... -
设置JTextPane指定内容的颜色
2010-05-21 14:29 1391package Assis; import java.a ... -
ScaleImageDemo图像缩小与放大演示
2010-05-12 14:59 2139package Assis; import java.a ... -
TreesDemo
2010-05-04 11:19 1114import java.awt.*; import java ... -
TableDemo
2010-05-04 11:17 1214import javax.swing.JTable; imp ... -
分割面板演示JSplitPaneDemo
2010-05-04 11:12 1417//Java Swing 带分隔条的面板代码 impor ... -
StylesExample8
2010-04-08 12:55 1234import javax.swing.*; import j ... -
StylesExample7
2010-04-08 12:54 1028import javax.swing.*; import j ... -
StylesExample6
2010-04-08 12:52 1082import javax.swing.*; import j ... -
StylesExample5
2010-04-08 12:51 1013import javax.swing.*; import j ... -
StylesExample4
2010-04-08 12:50 1142import javax.swing.*; import j ... -
StylesExample3
2010-04-08 12:50 1029import javax.swing.*; import j ...
相关推荐
支持在任意行添加一行且可配置的,如可在第一行添加一行、第二行添加一行、倒数第一行添加一行、倒数第二行添加一行,随需求的变化都不会影响。 前提条件:行数需在表中存在否则添加不成功。 2)、删除一行 支持动态...
例如,在 Table 中添加右键点击事件监听操作,可以提供更多的功能,例如数据编辑、数据删除等。 如何实现 Table 添加右键点击事件监听操作? 以下是一个简单的示例,演示如何在 Java 中实现 Table 添加右键点击...
这个示例项目名为"tableWidget_comboBox",它演示了如何初始化一个QTableWidget,并且当单元格值发生变化时,如何响应槽函数来处理这些变化。在特定情况下,最后一列被设计为组合框(ComboBox),增加了交互性。 ...
本篇将详细介绍如何在FastReport中实现这个功能,并通过一个完整的Demo来演示具体步骤。 1. **理解FastReport分页原理** 在FastReport中,分页是基于报表的每个细节带区(DetailBand)来计算的。每个带区代表报表...
优化高亮代码显示方式,放弃Table布局,改用Div+CSS,兼容多种浏览器乃至IE6以及移动浏览器; 添加代码工具栏,实现一键复制等功能,同样兼容多种浏览器。 等待你们去发现…… 更新时间: 2012-5-27 13:58:36 演示...
Python作为一个功能强大的编程语言,提供了诸如`python-docx`这样的库,使得我们能够方便地对Word文档进行读写和格式设置,包括修改表格的样式和内容。这个压缩包"用Python设置Word文档里表格的格式.zip"就是针对这...
例如,调用`table.deleteRow(index)`会在指定行号的位置删除一行。如果`index`无效,也会抛出`INDEX_SIZE_ERR` DOMException异常。以下代码演示了如何删除表格的第一行: ```html function delRow() { document...
它提供了强大的功能来管理数据,包括数据的查询、更新、删除等。 #### 二、什么是数据库 数据库是组织、存储和处理数据的系统。它可以被视为一种数据容器,用于存储各种类型的数据,并提供对这些数据的安全访问方式...
#### 十七、添加、修改和删除 数据操纵语言(DML)用于插入、更新和删除数据。 ##### 17.1 insert 向表中插入新行,例如:`INSERT INTO table_name (column_name1, column_name2) VALUES (value1, value2);`。 #####...
3. **设置样式**:对于每行,我们可以检查其行号(在JavaScript中,数组索引从0开始,所以奇数行是索引0, 2, 4...,偶数行是1, 3, 5...),并根据行号应用不同的背景色。这可以通过修改`style.backgroundColor`属性...
WPS,全称“Writer Perfect Suite”,是一款由金山软件开发的办公软件套件,其功能与微软的Office类似,提供了文本处理、电子表格和演示文稿制作等工具。 首先,我们需要了解WPS提供的API或封装类。WPS通常会为...
2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。...
- 定义了`jspxUtil`函数,该函数接收三个参数:当前操作的元素对象、当前行号以及最大行号。 - 通过`obj.value`获取当前输入框的值,并进行一系列逻辑判断与处理。 - 根据输入的值,动态调整表格行的顺序。 3. *...
- 增删改约束: 使用`ALTER TABLE`命令来添加或删除约束。 - 删除表: `DROP TABLE table_name;`. #### 十六、索引 - **索引**可以提高查询性能。 - 建立索引: `CREATE INDEX index_name ON table_name (column_...
这段代码演示了如何通过自定义渲染器设置偶数行和奇数行的背景色,以及如何设置行高。 以上是关于数据库表操作的详细知识点,包括表格的创建、动态填充、行的增删改查、禁止编辑、设置列宽及行高等操作。通过这些...
- **灵活的结构**:jQuery Treetable支持将任意的表格转化为树形结构,只需添加特定的类名或属性到表格元素中。 - **可展开/折叠**:每个行可以是树结构的一个节点,通过点击行头可以展开或折叠其子节点,便于查看和...
SQL(Structured Query Language,结构化查询语言)是用于管理和处理关系型数据库的强大工具,它允许用户执行各种操作,如查询、插入、更新和删除数据,以及创建和管理数据库对象。全面学习SQL,需要掌握以下几个...
值得注意的是,QueryTable的RefreshStyle属性设置为xlInsertDeleteCells,意味着在刷新数据时,新数据将取代旧数据,同时删除原有的数据单元格。此外,如果autoFitColumns参数为true,则会在数据导入完成后自动调整...
本例中的"Excel数据表实现动态小计.rar"文件提供了一个技巧207 数据表实现动态小计.xls的工作簿,它展示了如何利用Excel的表格(Table)功能和聚合函数来实现动态小计。下面将详细解释这一方法: 1. **创建Excel...
10. **文档与教程**:通常,这样的压缩包会包含详细的文档和教程,帮助学习者理解如何设置和使用TableBreakpointOptimization,包括MATLAB脚本、M文件的注释和解释,以及可能的演示文稿或教学视频。 综上所述,...