把上次没有写完的方法补全一下(上一篇
http://daimojingdeyu.iteye.com/blog/417915),先来看一下JScrollPane的结构
只要在JScrollPane的rowheader位置增加一下可以作为表头的组件就可以了,这里我们选择JTable,也就是说这个关键就是用一个table来作为另一个table的行头。
上图的左上角,即JScrollPane的rowheader和columnheader的交界处,为一个corn组件,选用一个JLabel来填充。代码如下:
import java.awt.Color;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JViewport;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
public class TableWithRowHeader2 {
public static void main(String[] args) {
final JFrame f = new JFrame("有行头的表格2");
String[][] tableData = {
{"90" , "89" , "67" , "88"},
{"80" , "99" , "77" , "58"},
{"80" , "99" , "77" , "58"}
};
String[] columnNames = {"数学", "语文", "英语", "化学"};
String[] rowNames = {"张三", "李四", "王二"};
String tableCorn = "姓名\\课程";
JTable table = new JTable(tableData, columnNames);
JScrollPane scrollPane = new JScrollPane(table);
// 设置表格的行头和行列交界处的边角的显示
scrollPane.setRowHeader(createRowHeader(rowNames));
JLabel corner = new JLabel(tableCorn);
corner.setBackground((Color) UIManager.get("TableHeader.background"));
scrollPane.setCorner(JScrollPane.UPPER_LEFT_CORNER, corner);
f.add(scrollPane);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.pack();
SwingUtilities.invokeLater(new Runnable()
{
@Override
public void run() {
f.setVisible(true);
}
});
}
/**
* 获取到一个使用表格加入到ScrollPane的rowheader,使其作为表的行头
* @param rowNames
* @return
*/
private static JViewport createRowHeader(String[] rowNames) {
String[][] data = new String[rowNames.length][1];
for (int i = 0; i < rowNames.length; i++) {
data[i][0] = rowNames[i];
}
//列头随便取一个,在JViewport里是不能显示的
JTable table = new JTable(data, new String[]{"aa"});
table.setEnabled(false);
table.setBackground((Color) UIManager.get("TableHeader.background"));
JViewport view = new JViewport();
view.setView(table);
view.setPreferredSize(new Dimension(60,54));
return view;
}
}
效果图可以参考
http://daimojingdeyu.iteye.com/blog/417915
思路应该就这2种吧(1、行头和数据混合。2、使用JScrollPane分离显示),其他的暂时没见到过。
- 大小: 13 KB
分享到:
相关推荐
JTable使用 JTable使用JTable使用JTable使用
JTable的显示效果
在动态刷新数据时,需要使用 DefaultTableModel,这是一个实现了 TableModel 接口的类,默认情况下,它会将数据存储在一个 Vector 中。Vector 的每个元素都是一个行数据,行数据又是一个 Vector,包含了每个单元格的...
JTable 拖动行 移动行的ui,直接 table.setUI(new DragDropRowTableUI()); 调用
例如,为了创建一个标题行或列,或者在某些情况下合并具有相同数据的单元格以减少重复,合并单元格就显得尤为重要。以下是对`JTable`合并单元格的详细解释。 首先,`JTable`本身并不直接支持单元格的合并功能。要...
实现jTable和jTree的双向联动,点击jTree会选中jTable单元格,点击jTable会选中jTree节点。
JTable的使用收藏 1.JTable与TableModel ...3.新加列,将列设为下拉框 4.表格排序 3. JTable事件响应和项目设想 4.一个游戏:《java连连看》 1.需求分析 2.编写TableModel和界面实现 3.连连看事件监听 总结和任务
在Java Swing库中,`JTable`是一个非常重要的组件,用于在GUI应用程序中展示表格数据。它是`javax.swing.JTable`类的实例,提供了一个可交互的二维数据视图,允许用户浏览、编辑和操作表格中的数据。这个"JTable ...
5. **将ResultSet转换为TableModel**:为了让`JTable`能显示`ResultSet`的数据,我们需要将`ResultSet`的内容转换为`TableModel`。这通常涉及到遍历`ResultSet`,获取列名和值,然后添加到`TableModel`中。 6. **...
### Swing之JTable详解 #### 类层次结构图 在Swing框架中,`JTable`是构建GUI应用程序中表格的主要组件。它继承自`JComponent`类,这使得`JTable`能够支持丰富的图形用户界面功能。下面展示了`JTable`的类层次结构...
- `AUTO_RESIZE_NEXT_COLUMN`: 只调整下一个列。 - `AUTO_RESIZE_SUBSEQUENT_COLUMNS`: 调整后续的所有列。 - `AUTO_RESIZE_LAST_COLUMN`: 只调整最后一列。 - `AUTO_RESIZE_ALL_COLUMNS`: 调整所有列。 例如: ```...
`autoResizeMode`属性可以设置为自动调整列宽以适应内容。 4. **隐藏/显示列**:可以通过修改`DefaultTableColumnModel`来隐藏或显示列。 5. **排序列**:`RowSorter`也可以用来对列进行排序,只需要设置适当的`...
- Excel中的数据可能需要转换为适合JTable显示的格式,比如日期可能需要转换为`SimpleDateFormat`对象格式化的字符串。 - 对于数字,可能需要设定JTable列的`NumberFormat`,以便正确显示。 5. **JTable的动态增...
默认情况下,`JTable`的单元格使用`DefaultTableCellRenderer`,它不支持文本的自动换行。为了实现自动换行,我们需要自定义一个渲染器,例如提供一个支持多行文本的`JTextArea`或`JLabel`。`...
在这种情况下,可以将这些列的表头合并为一个“客户”类别,提高表格的可读性和理解性。 在提供的文件中,我们可以看到以下几个关键类: 1. **GroupableTableHeaderUI**: 这是JTable表头的自定义UI实现,负责渲染...
在Java Swing库中,`JTable`是一个非常重要的组件,用于在GUI应用程序中展示数据集。它是`javax.swing.JTable`类的一个实例,可以用来显示和编辑表格数据。本教程将针对`JTable`的初步编程进行讲解,尤其适用于...
在Controller中,你需要为jTable的四个基本操作(列出、创建、更新、删除)编写对应的Action。例如: ```csharp public JsonResult GetEmployees() { var employees = db.Employees.ToList(); return Json(new { ...
`JFrame`的`contentPane`添加了`JScrollPane`,并设置布局管理器为`BorderLayout.CENTER`,使得表格居中显示。最后,`JFrame`设置了标题、调整大小并显示出来。 表格由两部分构成:行标题(Column Header)和行对象...
在某些情况下,你可能需要将`JTree`或`JTable`中的数据解析为格式化的文本并显示在`JTextPane`中。而`JSplitPane`是一个布局管理器,用于将两个组件(如`JTree`和`JTable`)放置在一个可调整大小的分隔面板中,用户...
swing Jtable使用checkboxswing Jtable使用checkboxswing Jtable使用checkboxswing Jtable使用checkboxswing Jtable使用checkboxswing Jtable使用checkboxswing Jtable使用checkboxswing Jtable使用checkboxswing ...