




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、/* * SimpleTableDemo.java is a 1.4 application that requires no other files. */ /编辑的时候直接从覆盖原有内容 import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import java.awt.Dimension; import java.awt.GridLayout; import java.awt.event.MouseAdapter;
2、import java.awt.event.MouseEvent; import java.util.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; import java.io.*; import java.util.*; public class Combine extends JPanel private boolean DEBUG = false; JTable table; public Combine() super(new GridLayout(1,0); table =
3、new JTable( new MyTableModel() ); table.setPreferredScrollableViewportSize(new Dimension(500, 70); / table.setDefaultEditor( String.class, new SelEditor() ); /Create the scroll pane and add the table to it. JScrollPane scrollPane = new JScrollPane(table); /Add the scroll pane to this panel. add(scro
4、llPane); /* * Create the GUI and show it. For thread safety, * this method should be invoked from the * event-dispatching thread. */ private static void createAndShowGUI() /Make sure we have nice window decorations. JFrame.setDefaultLookAndFeelDecorated(true); /Create and set up the window. JFrame f
5、rame = new JFrame("MyCustomTable2"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); /Create and set up the content pane. Combine newContentPane = new Combine(); newContentPane.setOpaque(true); /content panes must be opaque frame.setContentPane(newContentPane); /Display the window. f
6、rame.pack(); frame.setVisible(true); try Thread.sleep( 1000 ); catch ( InterruptedException e ) e.printStackTrace(); (MyTableModel)newContentPane.table.getModel().combineRow( "First Name", "Last Name" ); public static void main(String args) /Schedule a job for the event-dispatchi
7、ng thread: /creating and showing this application´s GUI. javax.swing.SwingUtilities.invokeLater(new Runnable() public void run() createAndShowGUI(); ); class MyTableModel extends AbstractTableModel private String columnNames = "First Name", "Last Name", "Sport", &q
8、uot;# of Years", "Vegetarian" private List cList = new ArrayList(); for( int i = 0; i < columnNames.length; i + ) cList.add( columnNames i ); private Object data = "Mary", "Campione", "Snowboarding", new Integer(5), new Boolean(false), "Alison&quo
9、t;, "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", &
10、quot;Milne", "Pool", new Integer(10), new Boolean(false) ; private List dList = new ArrayList(); for( int i = 0; i < data.length; i + ) List tmp = new ArrayList(); for( int j = 0; j < data i .length; j + ) tmp.add( data i j ); dList.add( tmp ); public int getColumnCount() return
11、 cList.size(); public int getRowCount() return dList.size(); public String getColumnName(int col) return (String)cList.get( col ); public Object getValueAt(int row, int col) return (List)dList.get( row ).get( col ); public void combineRow( String r1, String r2 ) int index1 = cList.indexOf( r1 ); int
12、 index2 = cList.indexOf( r2 ); cList.set( index1, r1+r2 ); cList.remove( r2 ); for( int i = 0; i < dList.size(); i + ) List list = (List)dList.get( i ); list.set( index1, list.get( index1 ).toString() + list.get( index2 ) ); list.remove( index2 ); fireTableStructureChanged(); /* * JTable uses thi
13、s 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 cList.get( c ).getClass(); public boole
14、an isCellEditable(int row, int col) /Note that the data/cell address is constant, /no matter where the cell appears onscreen. return true; public void setValueAt(Object value, int row, int col) (List)dList.get( row ).set( col , value ); fireTableCellUpdated(row, col); private void printDebugData() i
15、nt 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(" " + (List)dList.get( i ).get( j ); System.out.println(); System.out.println("-&qu
16、ot;); 请仔细看MyTableModel的实现第二个:/* (swing1.1beta3) */package tame.examples;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.awt.*;import javax.swing.*;import javax.swing.table.*;import tame.table.ColumnGroup;import tame.table.GroupableTableHeader;import tame.table.Group
17、ableTableHeaderUI;/*<pre>* |-|* | | Name | Language |* |
18、0; |-|-|* | SNo. | | | | Others |* | | 1
19、160; | 2 | Native |-|* | | | | | 2 | 3
20、0; |* |-|* | | | | | | |</pre>author Nobuo
21、 Tamemasaversion 1.0 11/09/98*/public class GroupableHeaderExample extends JFrame GroupableHeaderExample() super( "Groupable Header Example" ); DefaultTableModel dm = new DefaultTableModel(); &
22、#160; dm.setDataVector(new Object "119","foo","bar","ja","ko","zh", "911","bar","foo","en","fr",&quo
23、t;pt", new Object"SNo.","1","2","Native","2","3"); JTable table = new JTable( dm ) protected JTableHeader createDefaultTableHeader()
24、 return new GroupableTableHeader(columnModel); ; TableColumnModel cm = table.getColumnModel(); /得到列模型,可以取出表头 ColumnGroup g_name = new Col
25、umnGroup("Name"); g_name.add(cm.getColumn(1); g_name.add(cm.getColumn(2); ColumnGroup g_lang = new ColumnGroup("Language"); g_lang.add(cm.getColumn(3);
26、60; ColumnGroup g_other = new ColumnGroup("Others"); g_other.add(cm.getColumn(4); g_other.add(cm.getColumn(5); g_lang.add(g_other); GroupableTableHeader
27、 header = (GroupableTableHeader)table.getTableHeader(); header.addColumnGroup(g_name); header.addColumnGroup(g_lang); TableCellRenderer renderer = new DefaultTableCellRenderer()
28、160; public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, in
29、t row, int column) JTableHeader header = table.getTableHeader(); if (header != null) set
30、Foreground(header.getForeground(); setBackground(header.getBackground(); setFont(header.getFont();
31、0; setHorizontalAlignment(JLabel.CENTER); setText(value = null) ? "" : value.toString();
32、60; setBorder(UIManager.getBorder("TableHeader.cellBorder"); return this; ; TableColu
33、mnModel model = table.getColumnModel(); for (int i=0;i<model.getColumnCount();i+) model.getColumn(i).setHeaderRenderer(renderer); table.getTableHeader(
34、).setUI(new GroupableTableHeaderUI(); JScrollPane scroll = new JScrollPane( table ); getContentPane().add( scroll ); setSize( 400, 120 ); public static void main(String args
35、) GroupableHeaderExample frame = new GroupableHeaderExample(); frame.addWindowListener( new WindowAdapter() public void windowClosing( WindowEvent e ) System.exit(0);
36、; ); frame.setVisible(true); _public class GroupableHeaderExample extends JFrame GroupableHeaderExample() super( "Groupable Header Example" ); &
37、#160; DefaultTableModel dm = new DefaultTableModel(); dm.setDataVector(new Object "119","foo","bar","ja","ko","zh", "911","bar","foo"
38、;,"en","fr","pt", new Object"SNo.","1","2","Native","2","3"); JTable table = new JTable( dm ) protected JTableHeader createDefaultTableHeader()
39、 return new GroupableTableHeader(columnModel); ; TableColumnModel cm = table.getColumnModel(); ColumnGroup g_name = new ColumnGroup("Name"); g_name.add(cm.getColumn(1);
40、 g_name.add(cm.getColumn(2); ColumnGroup g_lang = new ColumnGroup("Language"); g_lang.add(cm.getColumn(3); ColumnGroup g_other = new ColumnGroup("Others"); g_other.add(cm.getColumn(4);
41、 g_other.add(cm.getColumn(5); g_lang.add(g_other); GroupableTableHeader header = (GroupableTableHeader)table.getTableHeader(); header.addColumnGroup(g_name); header.addColumnGroup(g_lang); TableCellRenderer ren
42、derer = new DefaultTableCellRenderer() public Component getTableCellRendererComponent(JTable table, Object value,
43、 boolean isSelected, boolean hasFocus, int row, int column) JTableù”vRNýYùPÿÙ/fHNNÞVN ÿSàV:N(WHQMRvheader-NòÏQÇmarginvîNÿTbÍY/ RNdkmargin0OïSåNôf9eGr
44、oupableTableHeaderUIvpaint¹eÕlÿ Rd(); setHorizontalAlignment(JLabel.CENTER); setText(value = null) ? "" : value.
45、toString(); setBorder(UIManager.getBorder("TableHeader.cellBorder"); return this; ; TableCo
46、lumnModel model = table.getColumnModel(); for (int i=0;i<model.getColumnCount();i+) model.getColumn(i).setHeaderRenderer(renderer); JScrollPane scroll = new JScrollPane( table ); getContentPane
47、().add( scroll ); setSize( 400, 120 ); public static void main(String args) GroupableHeaderExample frame = new GroupableHeaderExample(); frame.addWindowListener( new WindowAdapter() public void windowC
48、losing( WindowEvent e ) System.exit(0); ); frame.setVisible(true); 我发现表头和所对应的列不能够对齐,这是怎么一回事 ?原因为在先前的header中已经考虑过margin的问题了,而后面重复累加了此margin。你可以更改GroupableTableHeaderUI的paint方法,删除对margin的累加。本来我已经看到这种不能对齐的情况,没想到你真的来问。不过我还是鼓
49、励你自己解决,实在不行的话,在来此问。具体代码如下: public void paint(Graphics g, JComponent c) Rectangle clipBounds = g.getClipBounds(); if (header.getColumnModel() = null) return;/ (GroupableTableHeader)header).setColumnMargin(); int column = 0; Dimension size = header.getSize(); Rectangle cellRect = new Rectangle(0, 0, size.width, s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国摄像监控镜头行业投资前景及策略咨询研究报告
- 地产企业合伙人管理制度
- 四平市公共场所管理制度
- 公司租赁办公室管理制度
- 婚孕检医疗质量管理制度
- 公司行政部事务管理制度
- 日托中心日常管理制度
- 专家库建立级别管理制度
- 临川检验实训室管理制度
- 景区施工安全管理制度
- 幼儿园大班语言课件:《毕业诗》
- 劳动力保证措施以及计划安排
- 2021利达JB-QG-LD988EL JB-QT-LD988EL 火灾报警控制器 消防联动控制器调试手册
- 24春国家开放大学《班级管理》形考任务1-4参考答案
- 浙二医院护士进修心得体会6篇
- 2021年中国社会科学院大学统计学原理期末精练试卷
- 手术室坠床跌倒应急预案
- 2024年《军事理论》考试题库附答案(含各题型)
- 《风力发电厂调试规程》
- 广东省中山市2022-2023学年高二下学期期末数学试题(学生版+解析)
- 《无衣》教学设计 统编版高中语文选择性必修上册
评论
0/150
提交评论