- 浏览: 732356 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
lingsuch:
Android网络连接判断与处理 -
月光照着我:
写的不错,作为笔记了
Android中LayoutInflater的使用 -
智博王锋:
好文章是要顶的!
Android中LayoutInflater的使用 -
云南白药:
...
Android中LayoutInflater的使用 -
万新one:
理解了许多。解释的不错。3Q.
Android中LayoutInflater的使用
import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.AbstractTableModel; import java.awt.Dimension; import java.awt.GridLayout; public class TableSortDemo extends JPanel { private static final long serialVersionUID = 1L; private boolean DEBUG = false; public TableSortDemo() { super(new GridLayout(1, 0)); JTable table = new JTable(new MyTableModel()); table.setPreferredScrollableViewportSize(new Dimension(500, 70)); table.setFillsViewportHeight(true); table.setAutoCreateRowSorter(true); //这句话是重点 //Create the scroll pane and add the table to it. JScrollPane scrollPane = new JScrollPane(table); //Add the scroll pane to this panel. add(scrollPane); } class MyTableModel extends AbstractTableModel { private String[] columnNames = { "First Name", "Last Name", "Sport", "# of Years", "Vegetarian" }; private Object[][] data = { { "Mary", "Campione", "Snowboarding", new Integer(5), new Boolean(false) }, { "Alison", "Huml", "Rowing", new Integer(3), new Boolean(true) }, { "Kathy", "Walrath", "Knitting", new Integer(2), new Boolean(false) }, { "Sharon", "Zakhour", "Speed reading", new Integer(20), new Boolean(true) }, { "Philip", "Milne", "Pool", new Integer(10), new Boolean(false) }, }; public int getColumnCount() { return columnNames.length; } public int getRowCount() { return data.length; } public String getColumnName(int col) { return columnNames[col]; } public Object getValueAt(int row, int col) { return data[row][col]; } /* * * JTable uses this method to determine the default renderer/ * editor for each cell. If we didn't implement this method, * then the * last column would contain text ("true"/"false"), * rather than a check box. */ public Class getColumnClass(int c) { return getValueAt(0, c).getClass(); } /* * Don't need to implement this method unless your table's * editable. */ public boolean isCellEditable(int row, int col) { //Note that the data/cell address is constant, //no matter where the cell appears onscreen. if (col < 2) { return false; } else { return true; } } /* * Don't need to implement this method unless your table's * data can change. */ public void setValueAt(Object value, int row, int col) { if (DEBUG) { System.out.println("Setting value at " + row + "," + col + " to " + value + " (an instance of " + value.getClass() + ")"); } data[row][col] = value; // Normally, one should call fireTableCellUpdated() when // a value is changed. However, doing so in this demo // causes a problem with TableSorter. The tableChanged() // call on TableSorter that results from calling // fireTableCellUpdated() causes the indices to be regenerated // when they shouldn't be. Ideally, TableSorter should be // given a more intelligent tableChanged() implementation, // and then the following line can be uncommented. // fireTableCellUpdated(row, col); if (DEBUG) { System.out.println("New value of data:"); printDebugData(); } } private void printDebugData() { int numRows = getRowCount(); int numCols = getColumnCount(); for (int i = 0; i < numRows; i++) { System.out.print(" row " + i + ":"); for (int j = 0; j < numCols; j++) { System.out.print(" " + data[i][j]); } System.out.println(); } System.out.println("--------------------------"); } } /** * Create the GUI and show it. For thread safety, * this method should be invoked from the * event-dispatching thread. */ private static void createAndShowGUI() { //Create and set up the window. JFrame frame = new JFrame("TableSortDemo"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Create and set up the content pane. TableSortDemo newContentPane = new TableSortDemo(); newContentPane.setOpaque(true); //content panes must be opaque frame.setContentPane(newContentPane); //Display the window. frame.pack(); frame.setVisible(true); } public static void main(String[] args) { //Schedule a job for the event-dispatching thread: //creating and showing this application's GUI. javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGUI(); } }); } }
发表评论
-
Swing中引入Android的NinePatch技术,让Swing拥有Android的外观定制能力
2012-09-21 09:22 1627【摘要】 本文诣在 ... -
JavaSwing实现支持合并拆分的JTable
2010-12-16 15:39 1977GridBagModel:抽象模型接口。该接口用于描述表格中单 ... -
JTable小例子,表格中使用JComboBox下拉按钮
2010-12-16 15:21 5426import java.awt.BorderLayout; ... -
配合滚动面板实现JTable上下翻页的效果
2010-12-16 14:26 3423import java.awt.BorderLayout; ... -
JScrollBar简单演示例子
2010-12-06 19:28 6623import java.awt.*; import java ... -
重写JSplitPane的BasicSplitPaneUI
2010-09-18 13:39 1577import java.awt.Color; import ... -
Swing窗口初始最大化的方法
2010-08-20 11:09 79051.设置窗口最大(伪最大化) JFrame frame =n ... -
Tree目录实现拖拽功能演示实例(DragAndDrop)
2010-08-10 16:49 1801import java.awt.BorderLayout; ... -
设置JTextPane指定内容的颜色
2010-05-21 14:29 1367package Assis; import java.a ... -
ScaleImageDemo图像缩小与放大演示
2010-05-12 14:59 2123package Assis; import java.a ... -
TreesDemo
2010-05-04 11:19 1093import java.awt.*; import java ... -
TableDemo
2010-05-04 11:17 1205import javax.swing.JTable; imp ... -
分割面板演示JSplitPaneDemo
2010-05-04 11:12 1398//Java Swing 带分隔条的面板代码 impor ... -
StylesExample8
2010-04-08 12:55 1206import javax.swing.*; import j ... -
StylesExample7
2010-04-08 12:54 1004import javax.swing.*; import j ... -
StylesExample6
2010-04-08 12:52 1071import javax.swing.*; import j ... -
StylesExample5
2010-04-08 12:51 999import javax.swing.*; import j ... -
StylesExample4
2010-04-08 12:50 1116import javax.swing.*; import j ... -
StylesExample3
2010-04-08 12:50 1011import javax.swing.*; import j ... -
StylesExample2
2010-04-08 12:49 1062import javax.swing.*; import j ...
相关推荐
以下是如何设置`JTable`表头排序的步骤: 1. **获取表头视图(HeaderView)**:`JTable`的表头视图是`JTableHeader`,它负责处理表头的点击事件。 2. **设置比较器(Comparator)**:为每一列设置一个自定义的`...
而"JTable表头合并"是Swing中的一个高级特性,允许开发者创建具有复杂结构的表头,以更好地呈现和组织数据。这种功能特别适用于那些需要将相关列分组或分类的情况。 表头合并是通过`DefaultTableColumnModel`的`...
1. **GroupableTableHeaderUI**: 这是JTable表头的自定义UI实现,负责渲染合并后的表头。UI组件是Java Swing中的核心部分,它们决定了组件的外观和行为。GroupableTableHeaderUI将处理表头的绘制逻辑,包括合并区域...
4. **事件监听**:为了响应用户的排序请求,例如点击表头,你可以添加一个`MouseListener`到JTable的列头。在鼠标点击事件中,根据用户选择的列调整排序键。 5. **比较器**:对于中文排序,Java的默认比较可能不...
7. **事件处理**:多级表头可能需要处理额外的事件,如点击多级表头进行排序,这时需要注册适当的事件处理器并实现相应的逻辑。 8. **样式与外观**:为了提供良好的用户体验,可能需要自定义`LookAndFeel`或使用CSS...
这个实例“java--JTable排序实例源码”提供了一个功能,允许用户通过点击表头对`JTable`中的数据进行排序。这种功能在处理大量数据时非常实用,使得用户能轻松地查看和理解数据。 首先,我们来深入了解一下`JTable`...
在实际项目中,根据需求选择合适的方法来禁用JTable的列头拖动,不仅可以提高用户体验,也可以更好地控制数据的呈现方式。通过实践这些方法,你可以深化对Java Swing的理解,并进一步提升你的编程技能。
在Java Swing应用中,`JTable`是一种常用的组件,用于展示和操作二维数据。它提供了丰富的功能,如排序、选择和编辑。然而,`JTable`默认并不支持行间的拖放(Drag and Drop, DnD)操作。本文将详细介绍如何通过一种...
用户点击表头时,`TableSorter` 会根据点击的列自动进行升序或降序排序。 为了实现这一功能,你需要创建一个自定义的`TableModel` 类(如`MyTableModel`),并确保它实现了`TableModel` 接口的所有方法。然后,将`...
### Java的JTable:从数据库取数据显示在表格中的关键技术点 #### 一、数据库操作与JDBC连接 在Java中,使用JTable显示数据库中的数据是一个常见的应用场景。首先,我们需要了解如何通过Java Database ...
只需设置`AutoCreateRowSorter`属性为`true`,用户点击表头即可进行排序。 3. **列宽调整**:用户可以通过拖动列边框来调整列宽。开发者也可以通过`setColumnWidth()`方法预设列宽。 4. **行选择**:jTable允许...
3.使用JTable+TableModel展示java中的数据对象 2.JTable展示方式的美化 1.设置表格的宽度和高度 2.要显示表头 3.新加列,将列设为下拉框 4.表格排序 3. JTable事件响应和项目设想 4.一个游戏:《java连连看》 1.需求...
- **排序功能**:用户可以通过点击表头来对数据进行升序或降序排序。 - **搜索过滤**:提供内置的搜索框,允许用户根据需要筛选数据。 - **列选择**:允许用户自定义显示哪些列,提供更好的用户体验。 - **行操作**...
在Java编程环境中,`JTable`是Swing库中的一个核心组件,用于展示二维数据集,通常用于创建表格视图。这个组件对于用户界面(UI)设计尤其重要,尤其是在需要显示和编辑数据库或其他数据源数据时。下面我们将深入...
`JTable`可以通过添加`TableRowSorter`来实现数据的排序功能。对于数据过滤,可以创建自定义的过滤器并应用到`TableModel`上。 7. **动态更新**: `JTable`的`TableModel`接口提供了添加、删除和修改行的方法,...
首先,DataGrid通常用于展示数据库或其他数据源中的数据,具有分页、排序、过滤和编辑等多种功能。在Web应用中,DataGrid可以是基于JavaScript库(如jQuery UI的DataGrid或React的Ag-Grid)或者服务器端技术(如ASP...
- 如果需要排序,可以使用TableRowSorter,设置后,用户点击表头即可按指定列排序。 7. **单元格编辑** - isCellEditable(row, column):确定单元格是否可编辑。 - prepareEditor(editorComp, row, column):...
- **排序**:通过设置`TableSorter`,用户可以点击表头进行排序。 - **选择与事件处理**:`SelectionModel`允许你处理行选择,而`MouseListener`和`KeyListener`可以监听用户的交互行为。 - **列操作**:可以隐藏...